Azure Access Token Request返回HTML

时间:2016-06-17 15:45:04

标签: python python-2.7 azure python-requests azure-resource-manager

我正在尝试将授权码请求为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获取身份验证代码。但是,有没有办法在仍然使用请求包时从响应主体中获取此信息?

1 个答案:

答案 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

如有任何疑问,请随时告诉我。