2017-06-21 12 views
1

私はXamarinアプリケーション内の一部であるグループを取得しようとしています。Xamarinアプリケーション内のMicrosoft Graph APIスコープ

は今のところ、私はこの方法でトークンを取得しています:

public async Task SignIn() 
    { 
     if (App.IdentityClientApp != null) 
      this.authenticationResult = await App.IdentityClientApp.AcquireTokenAsync(new String[] { Constants.ApplicationID }); 
    } 

マイアプリのIDがApps.dev.microsoft.com登録ポータルから来ています。

私は、この方法で静かに別のトークンを取得:

private async Task GetTokenForGroups() 
    { 
     this.authenticationResult = await App.IdentityClientApp.AcquireTokenAsync(new String[] { "User.Read", "Directory.AccessAsUser.All" }, null); 
    } 

私はこれを行う場合、私は、管理者アカウントでログインするように求められています。 トークンの取得は成功しますが、他の管理者以外のユーザーの権限を「覚えている」のではなく、毎回管理者の承認を求めるメッセージが表示されます。

私は唯一の「User.Read」スコープを持つこの呼び出し作る場合:

public void GetAuthenticatedClient() 
    { 
     try 
     { 
      this.graphClient = new GraphServiceClient(
       "https://graph.microsoft.com/v1.0", 
       new DelegateAuthenticationProvider(
        async (requestMessage) => 
        { 
         await GetTokenForGroups(); 
         requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", this.authenticationResult.Token); 
        })); 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine("Could not create a graph client: " + ex.Message + ex.InnerException); 
     } 
    } 

    public async void GetGroups() 
    { 
     this.GetAuthenticatedClient(); 
     var groups = await graphClient.Me.MemberOf.Request().GetAsync(); 
    } 

を私はいくつかのグループを取得するが、彼らは、Outlookのグループではなく、セキュリティのものであるように見えます。

apps.dev.microsoft.comのマイ・グラフィックス・パーミッションは完全に空です。

ディレクトリデータをどのように読み取ることができますか?私は間違って何をしていますか?

ありがとうございます。

答えて

2

管理者同意ワークフローを使用する必要があります。単に管理者としてログインしても、管理者以外のユーザーには同意することはできません。それを可能にするための具体的なワークフローがあります。

私が書いた記事、v2 Endpoint and Admin Consentを見てください。これは、同意プロセスの配線の出発点を提供します。

+0

ありがとうございました。 リダイレクトURIは重要ですか?それともコンセプト後によりフレンドリーなナビゲーションを提供するために使用されていますか? –

+0

これは必須ですが、どのページでもかまいません。テナントがどのような同意を得たかを示すデータを返します。これは、どのユーザーが同意を得たかを把握するのに役立ちます。 –

関連する問題