2017-08-07 48 views
0

托管在本地主机在我的应用程序这项工作:微软图表,上传到SharePoint驱动器:来电者没有通过认证

"https://graph.microsoft.com:443/v1.0/sites/test.sharepoint.com,edc2dd46-cea8-4b10-a872-cd1a55ba4529,b14c0787-d4c1-4f4a-9a6c-7e010d794be9/drives/b!Rt3C7ajOEEuocs0aVbpFKYcHTLHB1EpPmmx-AQ15S-nygMtHkkWNRaaOc2GebusJ/items/01VI7PMEF6Y2GOVW7725BZO354PWSELRRZ?%24filter=folder ne null&%24select=id%2cfolder%2cname%2cparentReference%2cwebUrl" 

"https://graph.microsoft.com:443/v1.0/sites/test.sharepoint.com,edc2dd46-cea8-4b10-a872-cd1a55ba4529,b14c0787-d4c1-4f4a-9a6c-7e010d794be9/drives/b!Rt3C7ajOEEuocs0aVbpFKYcHTLHB1EpPmmx-AQ15S-nygMtHkkWNRaaOc2GebusJ/items/01VI7PMEF6Y2GOVW7725BZO354PWSELRRZ?%24filter=folder ne null&%24select=id%2cfolder%2cname%2cparentReference%2cwebUrl" 

"https://graph.microsoft.com:443/v1.0/sites/test.sharepoint.com,edc2dd46-cea8-4b10-a872-cd1a55ba4529,b14c0787-d4c1-4f4a-9a6c-7e010d794be9/drives/b!Rt3C7ajOEEuocs0aVbpFKYcHTLHB1EpPmmx-AQ15S-nygMtHkkWNRaaOc2GebusJ/root:/Presentation.en-GB.pptx:/microsoft.graph.createUploadSession" 

但是,当我已上载生产服务器上的应用程序在Azure上的Web应用程序。

我得到这个错误,试图通过id找到SharePoint站点并创建上传会话。

外: Microsoft.Graph.ServiceException:代码:itemNotFound 消息:资源无法被发现。

内衬: Microsoft.Graph.ServiceException:代码:未认证 消息:该呼叫者没有被认证。

它为什么在本地主机而不是我的天蓝色应用程序? 应用程序注册因开发和生产而异,但权限相同。

我知道的唯一区别是我添加了Sites.Read.All权限,而不是当我在https://apps.dev.microsoft.com/中注册生产应用程序时。

我正在使用Microsoft Graph客户端来获取访问令牌。 我也尝试删除所有离线标记,但不起作用。

如果我记得没错,当我添加权限Sites.Read.All我收到了一个新的同意请求。

权限的应用程序启用: 电子邮件,Files.Read,Files.ReadWrite,File.ReadWrite.AppFolder,offline_access,OpenID的,轮廓,Site.Read.All,User.Read

有什么不对?

生产登录:

{ 
typ: "JWT", 
alg: "RS256", 
kid: "VWVIc1WD1Tksbb301sasM5kOq5Q" 
}. 
{ 
aud: "f53962c3-2bd4-4302-adcf-49d9a93ccef0", 
iss: "https://login.microsoftonline.com/GUID/v2.0", 
iat: 1502142424, 
nbf: 1502142424, 
exp: 1502146324, 
aio: "ATQAy/8DAAAAo99zdMc3jCP7sR8Zw0iKijdu1Nv2AeJOpJ65OHtXb0o8QjTm9O320mHxIAv5tWJw", 
c_hash: "APreKq7N3Y0oG8SP6ipZdA", 
name: "First name Last name", 
nonce: "636377394901824543.ZWQ4MGVkYmEtYTMzMS00ZDUyLTgzZmYtYWFjMmRkNWRjNzhhNTAxMWUyYzItOGNhNi00N2IzLTk5MGEtMTVmYTlhYzBkNDVk", 
oid: "4f64d4db-8115-4f19-8554-bedf20688226", 
preferred_username: "[email protected]", 
sub: "rxGHRTX9YHogzaC_HgOmXvoKJ0Xye6Rk5HPAjLphQRc", 
tid: "34e9a1f3-23e1-4ead-b2fd-41660c25cc47", 
ver: "2.0" 
}. 

本地登录:

{ 
typ: "JWT", 
alg: "RS256", 
kid: "VWVIc1WD1Tksbb301sasM5kOq5Q" 
}. 
{ 
aud: "36d2abdd-2363-4ff9-b597-77d41e0e3b81", 
iss: "https://login.microsoftonline.com/GUID/v2.0", 
iat: 1502173871, 
nbf: 1502173871, 
exp: 1502177771, 
aio: "ATQAy/8EAAAA2JCq8vpq6La3M0KIKWw1vgJOfhDQyurYRhbCR47qSjByGzPkyZX0zi5y9uYCQS+q", 
c_hash: "3JkkVwHgmYiHvR-gVdb22w", 
name: "First name Last name", 
nonce: "636377709651517241.MDNkOWNhYzMtYjk4NC00OTBkLWI2Y2EtYzU5NmM0NWZjOGExNWQxZmU3MTgtN2RhYS00NjVlLTkwZDgtZjIwOGY4NTcyNTZi", 
oid: "4f64d4db-8115-4f19-8554-bedf20688226", 
preferred_username: "[email protected]", 
sub: "MRN4y1TZ-qG1uxrL7ozf8KbBm0VbcbH7djaKK187qH8", 
tid: "34e9a1f3-23e1-4ead-b2fd-41660c25cc47", 
ver: "2.0" 
}. 

另请阅读更多细节的意见。

+0

您确认范围包含在您的令牌中?您可以使用http://calebb.net/解析JWT。 –

+0

@ MarcLaFleur-MSFT您好,我明天会尝试calebb.net,谢谢。但是我确认两个web.config都包含相同的作用域。我只是找不到与生产和本地不同的东西,而不能使其发挥作用。顺便说一句,我正在开发的产品可以同时保存到OneDrive和SharePoint,其中第一个在两个环境中工作,而后一个只在本地工作。 – XzaR

+0

相同的SharePoint服务器实例或单独的产品和测试?如果问题是配置而不是代码,这很好。 –

回答

1

我在登录后在令牌上使用http://calebb.net/发现错误。

Azure应用程序注册缺少权限,Files.ReadWrite.All但开发没有它,但权限以某种方式包含在范围内。

Azure中的错误?如果我没有记错,我在应用程序注册中包含了很多权限,然后删除了其中的大部分权限,包括Files.ReadWrite.All。

即使当我的WebApp没有在作用域和应用程序注册中包含权限时,权限文件。ReadWrite.All保留在现有用户每个应用程序注册的范围内。这就是它在开发环境中工作的原因。

谢谢Marc LaFleur - MSFT。

+0

我不清楚_exactly_在这里发生了什么,但我很高兴你有它的工作。我会说,通常我建议使用v2端点并动态地请求您的范围(即在请求中)。这使得它很容易在dev/test和production之间进行调试和迁移。 –

+1

@ MarcLaFleur-MSFT我急着写了我的答案我认为它出现错误,现在应该更容易理解我的希望。谢谢,我会研究V2端点。 – XzaR