2016-06-08 80 views
1

我正在編寫使用Microsoft Graph API的服務。要檢索訪問令牌我也做了以下內容:基於IProvisioningWebServiceADAL - 如何以編程方式檢索oAuth訪問令牌

  1. 創建一個ServicePrincipal W /「公司管理員」角色使用SOAP(假設我會組織管理員憑據)
  2. 然後用ADAL4J LIB檢索訪問令牌

    // clientId = AppPrincipalId created in step#1 
    Future<AuthenticationResult> future = context.acquireToken(
         "https://graph.windows.net", clientId, username, password, 
         null); 
    

我收到以下錯誤,是我的方法不是有效?

com.microsoft.aad.adal4j.AuthenticationException:{ 「錯誤」: 「invalid_grant」, 「ERROR_DESCRIPTION」:「AADSTS65001:用戶或管理員未同意使用具有ID 'XXXX' 應用程序發送爲此用戶和資源提供交互式授權請求。\ r \ n追蹤ID:

回答

0

您需要前往Azure門戶並在您的應用程序中添加訪問圖表的權限,此選項將位於在「委託權限」下的頁面

0

發現它是我的一個問題...我應該使用clientId(th e appPrincipalId和client_secret(創建SP時使用的密碼)並使用以下調用來檢索access_token。

String authority = String.format(" https://login.windows.net/%s ",getTenantContextId()); context = new AuthenticationContext(authority, false, service); ClientCredential clientCredential = new ClientCredential(getAppPrincipalId(),getSymmetricKey()); Future future = context.acquireToken(" https://graph.windows.net ", clientCredential, null);

相關問題