I am trying to connect to the Microsoft Graph API without user intervention, and am following this guide on how to do so. I am able to get past step 4, where I receive my access token. However, I continue to receive an error saying that my access token is empty.
The first part of my code successfully gets the access token:
import urllib3
uri = "https://login.microsoftonline.com/companyID/oauth2/v2.0/token"
payload= {
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'login.microsoftonline.com',
'client_id': 'xxxxxxxxxxxxxxxxxxxxx',
'scope': 'https://graph.microsoft.com/.default',
'client_secret': 'xxxxxxxxxxxxxxxxxxxxx',
'grant_type': 'client_credentials'
}
http = urllib3.PoolManager()
response = http.request('POST', uri, payload)
print(response.data)
my_dict = eval(response.data)
token = f"{my_dict['token_type']} {my_dict['access_token']}"
When I try running this second part to connect to the Graph API:
import urllib3
uri2 = 'https://graph.microsoft.com/v1.0/users/12345678-73a6-4952-a53a-e9916737ff7f'
payload2 = {
'Authorization':token,
'Host':'graph.microsoft.com'
}
https = urllib3.PoolManager()
response2 = http.request ('GET', uri2, payload2)
print(response2.data)
I get this error:
b'{"error":{"code":"InvalidAuthenticationToken","message":"Access token is empty.","innerError":{"date":"2022-10-21T13:55:42","request-id":"xxxxxxxxx-aced-469c-a68c-xxxxxxxx","client-request-id":"xxxxx-aced-469c-a68c-xxxxxxxxxxxx"}}}'
All of the permissions are correctly set up on the app’s end, I’m scratching my head on why the token is saying it’s empty. Any and all help is greatly appreciated!
2
Answers
Please try by changing the following line of code:
to
I tried to reproduce the same in my environment and got the below results:
I created one Azure AD application and granted permissions as below:
Now, I ran the same code as you and got the
token
successfully as below:Output:
When I tried to call Graph API with same code, I got same error as you like below:
Output:
As you included
Authorization
in parameters instead of headers, your code is unable to identify the token.To resolve the error, try to modify your code like below:
Output:
I got the user’s details in the response successfully when I used the modified code.