我正在尝试将授权码请求为documented here。 我正在使用Python请求包来执行此操作并具有以下示例代码:
import requests
auth_endpoint = 'https://login.microsoftonline.com/%s/oauth2/authorize?api-version=1.0' % TENANT_ID
payload = {
'client_id': CLIENT_ID,
'response_type': 'code',
'resource': APP_ID_URI,
'redirect_uri': REPLY_URL
}
response = requests.get(url=auth_endpoint, data=payload)
但是,当我运行上面的代码时,我会在正文中找回HTML而不是我期待的响应。看起来HTML代码用于登录页面。 当我获取格式化的端点URI并将其插入浏览器时,我能够从重定向URI获取身份验证代码。但是,有没有办法在仍然使用请求包时从响应主体中获取此信息?
答案 0 :(得分:1)
请使用会话类请求模块来实现您的要求。请参考以下代码示例:
import requests
s = requests.Session()
USERNAME = '<username_email>'
PASSWORD = '<userpassword>'
s.auth = (USERNAME, PASSWORD)
TENANT_ID = '<tenant_id>'
# Authorize URL
authorize_url = 'https://login.microsoftonline.com/%s/oauth2/authorize' % TENANT_ID
# Token endpoint.
token_url = 'https://login.microsoftonline.com/%s/oauth2/token' % TENANT_ID
payload = { 'response_type': 'code',
'client_id': '<tenant_id>',
'redirect_uri': 'http://localhost',
'authority' :'authority'
}
response = s.get(authorize_url, params=payload ,allow_redirects=True)
print response
print response.url
如有任何疑问,请随时告诉我。