2017-03-01 99 views
0

我試圖獲取AppOnly訪問令牌以用於我對Project Online(SharePoint)中的REST端點的請求的Authorization Bearer標頭中。以下是我用來檢索訪問令牌的代碼片段。如何獲取適用於Project Online的ACS應用程序訪問令牌

private OAuth2AccessTokenResponse GetAccessTokenResponse() 
    { 
     var realm = TokenHelper.GetRealmFromTargetUrl([[our_site_url]]); 
     var resource = $"00000003-0000-0ff1-ce00-000000000000/[[our_site_authority]]@{realm}"; 
     var formattedClientId = $"{ClientId}@{realm}"; 

     var oauth2Request = OAuth2MessageFactory.CreateAccessTokenRequestWithClientCredentials(
      formattedClientId, 
      ClientSecret, 
      resource); 
     oauth2Request.Resource = resource; 

     try 
     { 
      var client = new OAuth2S2SClient(); 
      var stsUrl = TokenHelper.AcsMetadataParser.GetStsUrl(realm); 
      var response = client.Issue(stsUrl, oauth2Request) as OAuth2AccessTokenResponse; 

      var accessToken = response.AccessToken; 
     } 
     catch (WebException wex) 
     { 
      using (var sr = new StreamReader(wex.Response.GetResponseStream())) 
      { 
       var responseText = sr.ReadToEnd(); 
       throw new WebException(wex.Message + " - " + responseText, wex); 
      } 
     } 
    } 

即使我的請求中包含網站集管理憑證,我也會收到來自服務器的403 Forbidden響應。有沒有人有任何想法?

回答

0

在與Microsoft創建支持憑單以瞭解此情況後,我們最終決定放棄使用應用程序權限進行控制檯應用程序授權。

我們的解決方法是使用服務帳戶創建SharePointOnlineCredentials對象,然後從憑證對象獲取身份驗證cookie以使用我們的WebRequest進行傳遞。此解決方案來自此處的腳本:https://github.com/OfficeDev/Project-REST-Basic-Operations

相關問題