1

我在嘗試獲取Microsoft Graph API的訪問令牌以訪問SharePoint文檔庫。我的應用程序是一個Windows服務,因此我遵循here所述的過程。獲取Microsoft Graph API的訪問令牌

但是,當我嘗試獲取訪問令牌時,我得到的響應沒有範圍值。下面是我的迴應:

{ 
    "token_type": "Bearer", 
    "expires_in": "3600", 
    "expires_on":"1492452559", 
    "not_before": "1492448659", 
    "resource": "https://graph.microsoft.com", 
    "access_token": "Token" 
} 

正因爲如此,當我嘗試使用此訪問令牌查詢圖形API,我得到一個錯誤說:無論SCP或角色要求必須存在於令牌

有人可以幫助我如何讓這個工作?提前致謝。

+0

您是否用'Token'替換了一段真正長的文本? – juunas

+0

您可以檢查服務中的訪問令牌(如jwt.io),並檢查是否真的沒有範圍。你甚至可以在這裏粘貼一些內容(當然所有的私人信息被編輯/替換)。你還可以提一下你試圖用令牌調用的URL嗎?您還可以提及您在Azure AD中爲應用授予了什麼權限?如果這些都很好,那麼這可能是一個同意問題。 – juunas

+0

嗨Junnas,我給了應用程序權限:讀取和寫入所有需要管理員同意的網站集中的文件。你能告訴我怎麼能給管理員同意?謝謝, – user318197

回答

0

似乎您的客戶端應用程序在使用客戶端憑據流時未設置適當的應用程序權限,下面是Azure AD經典門戶中的應用程序權限部分的說明。請選擇需要適當的權限,然後重試: enter image description here

,此外,使用客戶端憑證流時,爲了獲得訪問令牌,你可以檢查在訪問令牌中的roles債權(即檢查應用程序權限的方式,而不是在令牌響應中),使用類似http://jwt.calebb.net/的工具來解碼訪問令牌並檢查應用的權限: enter image description here

+0

感謝您的回覆南煜,我解碼了訪問令牌,我沒有看到任何關鍵的角色。我已經爲Azure AD中的應用程序授予了應用程序權限,但看起來好像還沒有給出管理員同意。你能否告訴我如何給予管理員同意?謝謝。 – user318197

+0

這是獲得管理員同意的URL:https://login.microsoftonline.com/common/oauth2/authorize? CLIENT_ID = &REDIRECT_URI = &資源= &RESPONSE_TYPE =代碼 &response_mode = form_post &提示= admin_consent 得到這個工作。謝謝。 – user318197

相關問題