0

我想使用图形API,我对SharePoint网站进行身份验证作为资源URL。这是因为我正在使用C#CSOM API与SharePoint站点交谈。Azure Active Directory图Api - 用户

当我尝试使用相同的持票人令牌做出图表api请求时,它表示未经授权。我也向移动应用程序提供了Graph API的权限。这是否意味着我的资源uri需要不同,如果是这样的话,它应该是什么样子?我不确定如何找到它。

我基本上想给azure权限的注册应用程序共享点和图形api。当我得到的令牌,我希望能够使用此两种类型的请求

var client = new HttpClient(); 

client.DefaultRequestHeaders.Add("Accept", "application/json"); 
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "TOKEN_FROM_AUTHENTCIATION"); 

var result = client.GetAsync("https://graph.microsoft.com/v1.0/me/messages?$select=subject,from,receivedDateTime&$top=25&$orderby=receivedDateTime%20DESC").Result; 

我的连接细节类似于如下:

<add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}" /> 
<add key="ida:Tenant" value="mytenant.onmicrosoft.com" /> 
<add key="ida:ApplicationId" value="A GUID" /> 
<add key="ida:RedirectUri" value="http://AnyUri/" /> 
<add key="ida.ResourceUrl" value="https://mytenant.sharepoint.com/" /> 

我在想,我的ResourceUrl需要是一个图表api,但无法理解它应该是什么,我是否必须为我的域创建一个图形api的实例?

我正在使用小提琴手如下令牌这个请求,但是这回来为未经授权的401

GET https://graph.windows.net/22312560-20c8-0000-0000-0000000000/users/[email protected]/$links/manager?api-version=1.6 

Content-Type: text/json 
Accept: application/json 
Host: graph.windows.net 
Content-Length: 0 
Authorization: Bearer <THE_TOKEN> 

回答

1

这里有你需要遵循,以确保您的应用程序按预期工作步骤:

  1. 确保您的应用注册包含permissions to the Microsoft Graph以及进行API调用所需的范围。

  2. 设置你的资源为 “https://graph.microsoft.com/

  3. 找一个new access token此资源。
  4. 使用此新令牌调用Microsoft Graph API。您可以使用像this one这样的JWT解码器检查一切是否正常。
+0

肖恩嗨,我有RESOURCEID设置为https://graph.microsoft.com但是当我尝试做一个小提琴手要求,生病更新我的问题与小提琴手例如令牌我仍然可以说没有通过认证,什么是我可以尝试的简单图形请求? – Andrew

+1

注意,在Azure Active Directory的图形API'的https:// graph.windows.net /'比微软图形API'的https不同:// graph.microsoft.com /'。如果您获取特定资源的令牌,则该令牌仅在调用该资源时有效。这里的错误看起来像是你正在用MS Graph API的令牌调用AAD Graph API。相反,尝试使这一呼吁:'的https:// graph.microsoft.com/1.0/ME /' –

+1

完美,谢谢这是伟大的,这么简单的事,现在你们对我大加赞赏 – Andrew

相关问题