当前位置: 首页 > 知识库问答 >
问题:

如何在请求后访问最终url中的散列片段

晋西岭
2023-03-14

每当我将以下内容复制并粘贴到web浏览器中时

原始URL

http://accounts.spotify.com/authorize?client _ id = xxx2d 0 ff 4186 b 517 da a4 E1 c 577 e 4

我得到这个最终的网址

最终网址

http://localhost:5000/#access_token=XXX-LQY7xCQXTqpmsfroChl5yeUoiIDmoBfybqc9psLE2WFwP2UNQ26nVuiLGQkIWA-4occeXbrScaO5mqmMHZpgDPjTcSEfN9VZCLKKyfE46FUsucmCetP9owY_bRWoraZ8P2wwq0osZEMit0jmOrThvPTyKqp7O_rAbwT1BUsLeB9ux7xdLnTreocpmtZl3wqMXz24B2mwRMEieb_Dq2PUgIaK3zE7X-RvnzqQ

我的问题是,如何通过编程方式使用原始 URL 来获取最终 URL 中的access_token。最好是在蟒蛇中。原始URL将是常量,因此我不需要对已声明的参数的值进行任何更改

我已经试过了

    < li >使用python请求,并查看response.url(使用POST和GET),但当我这样做时,仅显示原始url。 < li >使用urllib的相同概念 < li >用显示。json,json(),。文本,。头,以及几乎所有可用的请求函数,但是它只引用原始url。

共有2个答案

明松
2023-03-14

我猜浏览器包含与身份提供者的有效会话(授权url-

假设是隐式授权,目的是检索url哈希片段中的访问令牌。脚本需要登录到身份提供者或拥有相关的会话cookies数据。

示例Python代码:

import requests
from urllib.parse import urlparse

singleSession = requests.Session()

# start with original url as https://oauth-abc.def.com/auth?client_id=123&redirect_uri=https://abc.def.com/oauth-callback&response_type=token&nonce=123&scope=something
# since there is no session with identity provider, the following get request should lead to redirect to identity provider / third party login form page. 
url_login_authorize = 'https://oauth-abc.def.com/auth?client_id=123&redirect_uri=https://abc.def.com/oauth-callback&response_type=token&nonce=123&scope=something'
result_login_oauth_page = singleSession.get(url_login_authorize, allow_redirects=True)

# result_login_oauth_page.url is the identity provider login form html page url which could be unique
# post credentials to authenticate with identity provider
url_login_oauth_endpoint = result_login_oauth_page.url + '/login'
result_login_oauth = singleSession.post(url_login_oauth_endpoint, credentials_object, allow_redirects=True) 

# post request to grant/confirm the requested scopes with authenticated session
url_login_confirm_oauth_endpoint = result_login_oauth_page.url + '/confirm'
result_login_confirm_oauth = singleSession.post(url_login_confirm_oauth_endpoint, {}, allow_redirects=True) 

# end with the final url as https://abc.def.com/oauth-callback#access_token=ilovemoney&expires_in=3600&token_type=Bearer&scope=something
result_oauth_callback_parse = urlparse(result_login_confirm_oauth.url)
result_oauth_callback_params = dict()
for callback_param in result_oauth_callback_parse.fragment.split("&"): 
    callback_param_split = callback_param.split("=")
    result_oauth_callback_params[callback_param_split[0]] = callback_param_split[1]
    
print("result_oauth_callback_params['access_token']: ", result_oauth_callback_params['access_token'])
羊舌胡非
2023-03-14

我假设您使用的授权流是用于获取用户令牌的隐式授权。但是,使用此流需要用户通过浏览器进行交互,以完成流并获取令牌。

这意味着在没有用户交互的情况下,隐式授权不能用于通过无浏览器应用获得用户的访问令牌。

对于无浏览器应用程序,您可能希望使用的身份验证流是客户端凭据流,您可以直接在响应中获取访问令牌。此授权流的限制是您不能使用需要用户身份的endpoint。

在文档的“常见问题解答”部分中,可能有一个适用于你的方案的答案,你可以改为使用刷新令牌。

 类似资料:
  • 问题内容: 因此,我正在使用net / http包。我正在获取一个我肯定知道要重定向的URL。在到达最终网址之前,它甚至可能重定向了几次。重定向在后台自动处理。 有没有一种简单的方法来确定最终的URL是什么,而没有涉及在http.Client对象上设置CheckRedirect字段的棘手的解决方法? 我想我应该提一提我想出了一种解决方法,但这有点of脚,因为它涉及使用全局变量并在自定义http.C

  • 问题内容: 当我使用jQuery进行Ajax请求时,是否可以查看请求的URL? 例如, 如何访问jQuery实际用于发出请求的URL?也许某种方法/属性?我在文档中找不到它。 谢谢。 问题答案: 在成功方法中设置一个断点,然后观察 是请求的真实网址。

  • 我正在编写一个处理多个系统的应用程序。用户可以选择他想使用的系统,我将该系统ID存储在会话(客户端会话)中 现在我有了服务类,比如说CustomerService。 我想使用 Guice 将客户实例注入控制器。但是我想使用存储在会话中的系统ID实例化客户服务。 如何访问<code>请求。Guice模块中的会话? 编辑: 简化了我上面的代码。我的实际代码使用接口。我如何使用辅助注射? 这给了我:客户

  • 问题内容: 如何在JavaScript中查看最后的GET http请求?基本上,我所能看到的是我的Firebug控制台。当XMLHttpRequests在控制台中显示时,我看到一行看起来像这样: 如何在JavaScript中查看该URL? 编辑:为了清楚起见,我正在寻找GET …和… 200之间的URL。我什么都不在乎。我不要任何其他信息。 问题答案: 我最终找到了在PHP中使用的变通办法,然后将

  • 问题内容: 我想要的是具有更改页面一部分的链接,以及它的动态URL,在这里可以指定诸如 单击此处进行精确演示 所以这是我需要的链接格式: 我必须像链接变量和这样我就可以改变一个页面上的多个万物而不realoading。 或诸如http://www.wbhomes.com.au上的另一种格式,这 正是 我想要的,但是第一种格式也不错,但这要漂亮得多。 要求 需要从任何地方访问,例如邮件,或者我只写在

  • 我有一个问题,我希望你能帮忙,因为我是哈希和哈希引用的东西的新手? 我有以下数据结构: 如果我想访问关键中的所有URL,以便我可以对URL执行一些其他操作,那么访问这些元素的正确或首选方法是什么? 例如,我将以下面的URL结束,然后我可以在< code>foreach循环中对这些URL执行操作: -编辑- 用于访问上面所示数据结构中进一步向下的元素的代码: 使用上面的代码,为什么会出现以下错误?