1

我在 Azure AD 门户中注册了一个应用程序,并授予 Microsoft Graph API 权限以获取用户数据 (user.read.) 和 yammer 源。

注意:该应用程序也在 yammer 门户中注册。

如果我使用了单个范围,则应用程序身份验证工作正常,但在多个范围的情况下它会失败。

案例:

在单范围情况下工作正常 val SCOPES = arrayOf(" https://graph.microsoft.com/.default ")

不能在多范围情况下工作 val SCOPES = arrayOf(" https://graph.microsoft.com/.default ", " https://api.yammer.com/user_impersonation ")

我们在 Android 中使用 Graph SDK。

提前致谢。

请提出一种实现解决方案的方法。

4

2 回答 2

2

您设置了来自不同资源的两个范围,这是不受支持的。

因为,最终您将获得一个Azure AD 访问令牌。但是,令牌中的 aud 声明只能代表一种资源。

在此处输入图像描述


结论:

  1. 您可以从一个资源中添加多个范围。例如:和 Microsoft Graphhttps://graph.microsoft.com/User.Read.Allhttps://graph.microsoft.com/Mail.ReadWrite的其他范围。

  2. 如果要获取多个资源的令牌,则需要分别获取它们的令牌。

于 2019-10-08T08:09:40.467 回答
0

我认为我们也可以添加user.read.all, mail.readwriteetc 而不用整个图形 URL 作为前缀,只是它需要用逗号分隔。

于 2021-09-17T13:04:56.147 回答