【问题标题】:Graph API Not able to access "https://graph.microsoft.com/v1.0/me/messages" endpoint图形 API 无法访问“https://graph.microsoft.com/v1.0/me/messages”端点
【发布时间】:2021-10-18 19:43:35
【问题描述】:

我正在尝试通过微软提供的 JAVA SDK 访问“https://graph.microsoft.com/v1.0/me/messages”API。

我正在使用下面的代码。

 final AuthorizationCodeCredential authCodeCredential = new AuthorizationCodeCredentialBuilder()
            .clientId("b****08f-*****-4d49-****-cba7d9a****c")
            .clientSecret("8***7Q~GW0N******Y_N*****Zi******") 
            .authorizationCode("0.AVUAoIQSV...")
            .redirectUrl("http://localhost/auth-responses")
            .build();

现在它给了我类似“租户 guid '571284a0---****-a94eea6c6b3f' 的租户不存在。"

我尝试了邮递员的相同操作,这里我尝试通过以下端点获取令牌。

“https://login.microsoftonline.com/common/oauth2/token”

获得令牌后,我在“https://graph.microsoft.com/v1.0/me/messages”中将其用作不记名令牌。不过,我遇到了同样的问题。

但我在每种情况下收到的令牌都与图形浏览器不同访问令牌

如果我复制 Graph Explorer 访问令牌并在邮递员中使用它,那么它会给我想要的结果。

我在所有以“@outlook.com”结尾的过程中使用个人帐户。

我想知道为什么我获得的访问令牌与图形浏览器访问令牌不同,以及为什么该访问令牌无法访问端点。

【问题讨论】:

  • 您好@shubhgaikwad,请问您是如何登录到图形浏览器的?您的个人帐户是租户中的用户还是管理员?您正在使用的 client_id 是它的所有者吗?也可以请您添加邮递员令牌请求正文参数的屏幕截图like this 吗?当我使用身份验证代码流从邮递员那里对其进行测试时,我也成功地能够运行图形 api..
  • 嗨,我正在使用我在该租户下创建的用户签名到图形浏览器。
  • 哦,我也是这样的..你能添加邮递员的截图吗
  • 是的,当然。 link SS
  • 我正在尝试创建一个服务来获取消息,但签名到图形浏览器将无济于事。我正在尝试通过此端点 graph.microsoft.com/v1.0/me/mailFolders/SentItems/… ge 2021-10-15T00:00:08Z) 和 (receivedDateTime le 2021-10-16T00:00:08Z) 获取消息

标签: azure-active-directory microsoft-graph-api authorization microsoft-identity-platform


【解决方案1】:

我已经在我的环境中测试过了。

Graph Explorer 生成的访问令牌与 Postman 生成的访问令牌不同。这是因为,从图形资源管理器生成的访问令牌仅使用用户凭据。邮递员生成的访问令牌使用客户端 ID 和客户端密码以及用户凭据。

如果应用注册支持任何组织目录(任何 Azure AD 目录 - 多租户)和个人 Microsoft 帐户(例如 Skype、Xbox)中的帐户,则只有您可以使用个人帐户生成访问令牌并使用它来调用仅当应用注册具有 Microsoft Graph mail.read 委派权限时才请求 https://graph.microsoft.com/v1.0/me/messages

在浏览器中粘贴以下 URL。将生成代码。复制代码。

https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?
client_id=app-client-id
&response_type=code
&response_mode=query
&scope=mail.read

在邮递员中发出以下 POST 请求以生成访问令牌:

POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Headers : 
Content-Type: application/x-www-form-urlencoded

Body : 
client_id: App Client ID
grant_type: authorization_code
scope: user.read%20mail.read
code: Code received in the first step
client_secret: Client Secret Generated in the App

复制访问令牌并在邮递员中发出以下获取请求以读取消息:

GET https://graph.microsoft.com/v1.0/me/messages

Headers:
Authorization : Bearer access-token

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2021-09-14
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多