2016-10-04 18 views
0

日後とPowerBIの検索の数時間がなく、PowerBIのWebアプリケーションのサンプルを読み取ることができ、私は壁に走った、下のコードがacquiretokesilently PowerBIのためのあなたのユーザ名とパスワード

  var tokenCache = new TokenCache(); 
      var authContext = new AuthenticationContext(authorityUri, tokenCache); 
      var token = authContext.AcquireToken(resourceUri, clientId, new Uri(redirectUri)).AccessToken; 
を変更するための最良の方法何です

アクセス・トークンを取得する電源Bi rest API用にSliently。私はAcquireTokenSlientAsyncがあることを知っていますが、私はcliendIDとclientSecretを含むWebAppとして私のアプリケーションを登録すると403エラーが出ます。

現在のところ、私のWebアプリケーションは、開発者のpowerbiにNativeAppとして登録されており、リクエストごとにトークンを取得しています。しかし、毎回ポップアップがあります。

私はWebページにさまざまなレポートを埋め込むためにアクセストークンを使用しているので、誰かが私にUserNameとパスワードを使用せずにトークンをスムーズに取得する方法の洞察を示すことができれば嬉しいです。

私は、任意の洞察力がはるかに高く評価されてvar token = authContext.AcquireTokenSlientAsync(resourceUri, clientCredential);

を使用して試してみました。

+0

AADを使用した初期のアプリ認証ですか?レポートはユーザー固有のものを表示しようとしていますか? – JustLogic

+0

@JustLogic最初のアプリケーション認証では、クレームを取得するMicrosoft Graph認証を使用しています。次に、私が使用しようとしているレポートは、ユーザー固有の –

答えて

0

あなたのコメントに基づいて、最初の認証で取得した「更新」トークンを使用できます。その最初のトークンにはリフレッシュトークンが含まれていなければなりません。リフレッシュトークンでは、 "AcquireTokenByRefreshToken"メソッドを使用してアクセストークンが必要な新しいリソース(power bi api)を渡すことができます。

 
AuthenticationContext authContext = new AuthenticationContext(Authority, new AdalTokenCache(claim.Value)); 

var refresh_token = authContext.TokenCache.ReadItems().FirstOrDefault().RefreshToken; 

ClientCredential credential = new ClientCredential(clientId, appKey); 

var resp = authContext.AcquireTokenByRefreshToken(refresh_token, credential, "https://analysis.windows.net/powerbi/api"); 

希望します。

+0

です。あなたの回答に感謝します.clientCredential(appKey)はPowerBI clientSecret webappとして登録した後?ありがとう –

+0

また、私の最初の認証はSessionTokenCacheを使用していたので、私はwebapiのセッションからトークンを取得し、それを取得すると思います... –

+0

はい、クライアントIDとappkey(クライアントの秘密)は、ああ。 – JustLogic

関連する問題