Microsoft Graph API 无法使用 mail.read
Microsoft Graph API not able to use mail.read
在我的应用程序中,我通过
生成了一个访问令牌
GET https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/authorize?client_id=<CLIENT_ID>&response_type=code&response_mode=query&scope=user.read+mail.send+mail.readwrite&redirect_uri=https%3A%2F%2Fgraphresponse%2F&prompt=consent
使用
上的代码
POST https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token
与 application/x-www-form-urlencoded
: grant_type=authorization_code&redirect_uri=https%3A%2F%2Fgraphresponse%2F&client_id=<CLIENT_ID>&scope=user.read+mail.send+mail.readwrite&client_secret=<CLIENT_SECRET>&code=<CODE>
到目前为止一切顺利,我收到了这样的不记名令牌(为了便于阅读而格式化):
{"token_type":"Bearer",
"scope":
"Mail.Read Mail.Read.All Mail.Read.Shared
Mail.ReadBasic Mail.ReadWrite Mail.ReadWrite.Shared
Mail.Send openid User.Read profile email",
"expires_in":3600,
"ext_expires_in":3600,
"access_token":"<TOKEN>"
}
我可以使用以下端点
GET http://graph.microsoft.com/v1.0/me
POST http://graph.microsoft.com/v1.0/me/sendMail
POST http://graph.microsoft.com/v1.0/me/messages
但我收到以下错误
GET http://graph.microsoft.com/v1.0/me/messages
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "xxxxxxx",
"date": "2019-03-12T13:38:47"
}
}
}
我是否遗漏了任何明确读取当前用户收件箱所必需的配置,或者是否需要任何管理配置?
因为你正在尝试 authorization code flow 所以你需要遵循以下
访问步骤
https://graph.microsoft.com数据。
注:
确保您已注册 Office 365 用户帐户
全部必填permission grant
作为document explain首先你需要令牌请求码
response_type = 代码
有两种方法。
来自 post 人工请求和来自浏览器并提供您所需的凭据
这里我会展示 postman workaround 你也可以试试把它粘贴到浏览器上。
邮递员代码访问示例
请确保您已在门户中按预期配置此 URL 请参阅以下屏幕截图:
要获取 v2.0 令牌请求访问代码,请将请求端点设置为:
https://login.microsoftonline.com/common/oauth2/v2.0/token
内容类型为:application/x-www-url-form-urlencoded
请参阅下面的屏幕截图:
现在单击“授权”选项卡,然后 select 输入 OAuth 2.0,然后单击“获取新访问权限”
令牌。请参阅下面的屏幕截图:
你会提示 postman 弹出如下:
在此处输入您的必要信息,然后单击请求令牌
在 postman console body 段中,您将获得令牌请求的访问代码。请参阅下面的屏幕截图:
复制代码供下次使用。
现在在 post man 上添加一个新标签,用于令牌请求,如下所示:
作为回应,您将获得如下访问令牌:
现在使用此令牌请求到您预期的端点,例如 http://graph.microsoft.com/v1.0/me
请参阅下面的屏幕截图:
作为响应,您将按预期获得端点数据
请参阅下面的屏幕截图:
如果您还有任何问题,请告诉我,谢谢。
在我的应用程序中,我通过
生成了一个访问令牌GET https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/authorize?client_id=<CLIENT_ID>&response_type=code&response_mode=query&scope=user.read+mail.send+mail.readwrite&redirect_uri=https%3A%2F%2Fgraphresponse%2F&prompt=consent
使用
上的代码POST https://login.microsoftonline.com/<TENANT_ID>/oauth2/v2.0/token
与 application/x-www-form-urlencoded
: grant_type=authorization_code&redirect_uri=https%3A%2F%2Fgraphresponse%2F&client_id=<CLIENT_ID>&scope=user.read+mail.send+mail.readwrite&client_secret=<CLIENT_SECRET>&code=<CODE>
到目前为止一切顺利,我收到了这样的不记名令牌(为了便于阅读而格式化):
{"token_type":"Bearer",
"scope":
"Mail.Read Mail.Read.All Mail.Read.Shared
Mail.ReadBasic Mail.ReadWrite Mail.ReadWrite.Shared
Mail.Send openid User.Read profile email",
"expires_in":3600,
"ext_expires_in":3600,
"access_token":"<TOKEN>"
}
我可以使用以下端点
GET http://graph.microsoft.com/v1.0/me
POST http://graph.microsoft.com/v1.0/me/sendMail
POST http://graph.microsoft.com/v1.0/me/messages
但我收到以下错误
GET http://graph.microsoft.com/v1.0/me/messages
{
"error": {
"code": "ErrorAccessDenied",
"message": "Access is denied. Check credentials and try again.",
"innerError": {
"request-id": "xxxxxxx",
"date": "2019-03-12T13:38:47"
}
}
}
我是否遗漏了任何明确读取当前用户收件箱所必需的配置,或者是否需要任何管理配置?
因为你正在尝试 authorization code flow 所以你需要遵循以下
访问步骤
https://graph.microsoft.com数据。
注:
确保您已注册 Office 365 用户帐户
全部必填permission grant
作为document explain首先你需要令牌请求码
response_type = 代码
有两种方法。
来自 post 人工请求和来自浏览器并提供您所需的凭据
这里我会展示 postman workaround 你也可以试试把它粘贴到浏览器上。
邮递员代码访问示例
请确保您已在门户中按预期配置此 URL 请参阅以下屏幕截图:
要获取 v2.0 令牌请求访问代码,请将请求端点设置为:
https://login.microsoftonline.com/common/oauth2/v2.0/token
内容类型为:application/x-www-url-form-urlencoded
请参阅下面的屏幕截图:
现在单击“授权”选项卡,然后 select 输入 OAuth 2.0,然后单击“获取新访问权限”
令牌。请参阅下面的屏幕截图:
你会提示 postman 弹出如下:
在此处输入您的必要信息,然后单击请求令牌
在 postman console body 段中,您将获得令牌请求的访问代码。请参阅下面的屏幕截图:
复制代码供下次使用。
现在在 post man 上添加一个新标签,用于令牌请求,如下所示:
作为回应,您将获得如下访问令牌:
现在使用此令牌请求到您预期的端点,例如 http://graph.microsoft.com/v1.0/me
请参阅下面的屏幕截图:
作为响应,您将按预期获得端点数据
请参阅下面的屏幕截图:
如果您还有任何问题,请告诉我,谢谢。