2017-03-01 22 views
0

Project Online(SharePoint)のRESTエンドポイントへのリクエストの承認ベアラヘッダーで使用するためのAppOnlyアクセストークンを取得しようとしています。以下は、私がアクセストークンを取得するために使用していたコードのスニペットです。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禁止を取得し続けます。誰かそこに誰か考えがありますか?

答えて

0

マイクロソフトとサポートチケットを作成した後、最終的にはコンソールアプリケーションの承認にアプリの権限を使用することに移ることにしました。

解決策は、サービスアカウントを使用してSharePointOnlineCredentialsオブジェクトを作成し、資格情報オブジェクトからAuth Cookieを取得してWebRequestに渡すことでした。この解決策はここにあるスクリプトに由来します:https://github.com/OfficeDev/Project-REST-Basic-Operations

関連する問題