0

Я пытаюсь запросить авторизационный код как documented here. Я использую Python запрашивает пакет, чтобы сделать это, и иметь следующий пример кода:Azure Access Token Request return HTML

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

Вы попробовали 'params = payload'? Или это должно быть сообщение? –

+0

Код авторизации Grant Flow требует взаимодействия с пользователем, что означает, что вы должны создать URL-адрес, поместить его в веб-браузер, войти в систему с именем пользователя и паролем, а затем вы можете получить свой код авторизации по URL-адресу переадресации. Если вам нужен только токен доступа, вам действительно не нужно использовать поток полномочий для кода авторизации. Вы можете попробовать учетные данные клиента вместо кода авторизации. –

ответ

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 

Любые дальнейшие заботы, пожалуйста, не стесняйтесь, дайте мне знать.

 Смежные вопросы

  • Нет связанных вопросов^_^