在访问特定用户的图形资源时遇到问题。大多数没有问题。该特定用户通过他们的学校Outlook帐户向我们的客户进行身份验证,我认为这是问题所在。
我们的服务尝试使用/me/contactFolders
端点创建一个特定的文件夹。发布帖子时,出现错误the resource could not be discovered
。稍微钻研一下,我决定用他们的帐户登录Graph资源管理器,并且无法查询端点/me/contacts
,/me/contactFolders
,/me/events
等。没有提供任何示例努力获取任何数据。我假设这与用户帐户的许可有关,但是我不确定他们访问日历和联系人都需要什么权限(我们正在正确设置范围和委托权限,因为此问题仅与几个用户有关)
这是我尝试查询图形时收到的错误消息:
{
"error": {
"code": "ResourceNotFound",
"message": "Resource could not be discovered.",
"innerError": {
"request-id": "5cfd7b28-a915-42cf-9bce-a8a2509c3f1f",
"date": "2018-12-20T18:48:34"
}
}
}
在诊断此问题方面的任何帮助将不胜感激!
答案 0 :(得分:0)
如果您无法解码令牌,则很可能会遇到以下问题之一:
您不正确地获得了令牌
您正在尝试解码授权码,而不是访问令牌(即,您从第一个OAuth步骤而不是第二个OAuth步骤获得的字符串)。
令牌用于Microsoft帐户(也称为MSA,也称为Xbox或Outlook.com帐户)。
您只能解码Azure AD(AAD)发行的令牌。学校帐户(即以.edu
结尾的帐户)与工作帐户基本相同,它们由Azure Active Directory拥有和管理。
就检查为当前用户提供了哪些服务而言,只要您请求了/me
或User.Read
范围,就可以从User.ReadWrite
端点获得这些服务。请注意,默认情况下不包含此信息,因此您需要专门请求provisionedPlans
。例如,以下查询将返回当前用户的id
,userPrincipalName
及其列表provisionedPlans
(即服务):
https://graph.microsoft.com/v1.0/me/?$select=id,userPrincipalName,provisionedPlans
结果是不言自明的,但是在特定情况下,您正在寻找名为exchange
的服务(通常有多个服务,但它们都应反映相同的状态):
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,userPrincipalName,provisionedPlans)/$entity",
"id": "48d31887-5fad-4d73-a9f5-3c356e68a038",
"userPrincipalName": "MeganB@M365x214355.onmicrosoft.com",
"provisionedPlans": [
{
"capabilityStatus": "Enabled",
"provisioningStatus": "Success",
"service": "exchange"
},