当我以编程方式遵循协议(python2和请求)时,Oauth2身份验证不起作用。但当我使用浏览器时,它可以正常工作。我的目的是从重定向的url中检索授权码,以便生成访问令牌。
我应该在头中添加一些东西来允许重定向吗?
import requests
uri = https://login.microsoftonline.com/0000-0000-0000-0000/oauth2/authorize?response_type=codel&client_id=0000-0000-0000-0000-0000&response_mode=query&resource=https%3A%2F%2Fwww.foo.com%2F&redirect_uri=http%3A%2F%2Flocalhost:80%2F
r = requests.get(uri)
print r.url
print r.status_code
print r.history状态代码是200,但我希望得到302状态和结果url,如下所示:localhost:80/?code=mycode&state=mystate&session_state=thesessionstate
诚挚的问候。
发布于 2018-04-04 01:17:38
为什么你会期望302分?这也需要您传入会话cookie。
它返回一个200OK,因为响应包含登录屏幕。
当您拥有这样的脚本时,您可能应该使用客户端凭据流(它使用应用程序权限):https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service。
另一种选择是设备代码流,我在我的博客https://joonasw.net/view/device-code-flow中描述了这一点。
发布于 2018-04-04 01:23:28
尝试设置这些标头:
Host: login.microsoftonline.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8https://stackoverflow.com/questions/49635758
复制相似问题