i am trying to fetch all my mails from outlook using Graph API, and i am stuck in this error
i am using delegated flow for access token i am calling this end point 'https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/token' for getting an access token
AuthURl : 'https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/authorize'
Access Token URL : 'https://login.microsoftonline.com/common/oauth2/v2.0/token'
i am able to get access token but when i try to call this end point with accesstoken 'https://graph.microsoft.com/v1.0/me/messages' it gives me this error
{"error":{"code":"OrganizationFromTenantGuidNotFound","message":"The tenant for tenant guid
'28331ffe-XXXX-46af-9415-XXXXXXXXXXXX## Heading ##' does not
exist.","innerError":{"oAuthEventOperationId":"84f7039d-34b8-4e17-a66a-2c672f1a1468","oAuthEventcV":"/GzDJG2u4Bnxk14D+fZR+w.1.1","errorUrl":"https://aka.ms/autherrors#error-InvalidTenant","requestId":"ffc2a401-b871-4aa9-b1ea-3ce5739e07c8","date":"2024-06-14T06:29:26"}}}
it works fine in graph explorer but not in API
as far i researched it says i need Microsoft 365 with active subscription.
The error occurred as you are using "tenant ID" in authorization endpoint while signing in with personal Microsoft accounts. To resolve the error, make use of /common
endpoint for both authorization request and token generation.
In my case, I ran below authorization request in browser and got code value successfully after signing in with personal Microsoft account:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
?client_id=appId
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=Mail.Read
&state=12345
Now, I used this code to generate access token using authorization code flow via Postman:
POST https://login.microsoftonline.com/common/oauth2/v2.0/token
grant_type:authorization_code
client_id:appId
client_secret:secret
scope:Mail.Read
code:code
redirect_uri: https://jwt.ms
Response:
When I used this token to call API, I got messages successfully like this:
GET https://graph.microsoft.com/v1.0/me/messages
Response:
Note that, you will get only 10 messages in API response by default. To get more, make use of $top
query parameter in API call to get all messages by modifying the page size based on your requirement:
GET https://graph.microsoft.com/v1.0/me/messages?$top=100
Reference: List messages - Microsoft Graph