2015-02-24 67 views
0

我正在为我的客户开发一个ios应用程序在客观的C.它涉及onedrive(sharepoint)的office 365 api用法。我正在使用github的OfficeDev/Office-365-SDK-for-iOS库。 azure为办公室365设置正确。应用程序在Azure中拥有所有权限。不过,我不是管理员。办公室365 onedrive - 获取文件未经身份验证的错误

随着应用程序,我能够登录到onedrive,并能够获取令牌。 使用“https://api.office.com/discovery/me/services”,我可以获取服务。 然而,当我试图获得与“https://xxx-my.sharepoint.com/_api/v1.0/me/files/root1/”,我收到以下错误文件:

错误:

GetFiles的错误:错误域=在请求代码错误= 403“的操作无法完成(错误请求错误403.)“UserInfo = 0x170260980 {error = {0} {code =” - 2147024891,System.UnauthorizedAccessException“; message =“访问被拒绝,您无权执行此操作或访问此资源。”; }}

谁能面对这种问题..

回答

0

,你已经是唯一的服务发现的访问令牌。您需要获取特定服务的访问令牌。详情请参阅https://msdn.microsoft.com/en-us/office/office365/howto/discover-service-endpoints

所以,基本上你需要执行一个多个请求:

POST https://login.microsoftonline.com/common/oauth2/token 
{ 
    'grant_type': 'refresh_token', 
    'client_id': <your client_id>, 
    'client_secret': <your client_secret>, 
    'refresh_token': <refresh token that you already have>, 
    'resource': <resource_id of resource you want to access> 
} 

它会返回访问令牌,你可以用它来访问特定服务的API。

+0

对不起,此时需要特定服务的访问令牌,我该如何知道哪个是资源ID?我想得到我的访问令牌,我有client_id,client_secret但不知道resource_id是什么。这是什么意思? – 2016-08-11 13:00:50

+0

resource_id是您想要访问的服务的名称。例如,resource_id可以是'https://manage.office.com'或'https://graph.microsoft.com/'。 – 2017-02-17 13:38:46

相关问题