2015-02-24 74 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

相關問題