web-dev-qa-db-ja.com

AADSTS70011:入力パラメーター 'scope'に指定された値は無効です

したがって、特定の条件でグループ化するユーザーをアプリケーションで追加する必要があるシナリオがあります。また、アプリケーションの実行開始時に、ユーザーにMicrosoft ID/pwdへのログインを要求しないでください。したがって、次のようにして、Graph Service Clientオブジェクトを作成したトークンにアクセスします。

_GraphServiceClient graphClient = new GraphServiceClient(
    "https://graph.Microsoft.com/v1.0", 
    new DelegateAuthenticationProvider(
        async (requestMessage) =>
        {
            string clientId = "My APP ID";
            string authorityFormat = "https://login.microsoftonline.com/{0}/v2.0";
            string tenantId = "tenant GUID";
            string[] _scopes = new string[] { 
                "https://graph.Microsoft.com/User.ReadBasic.All" 
            };
            // Custom Redirect URI asigned in the Application Registration 
            // Portal in the native Application Platform
            string redirectUri = "https://localhost:4803/"; 
            string clientSecret = "App Secret";
            ConfidentialClientApplication daemonClient = new ConfidentialClientApplication(
                clientId, 
                String.Format(authorityFormat, tenantId), 
                redirectUri, 
                new ClientCredential(clientSecret), 
                null, new TokenCache()
            );
            AuthenticationResult authResult = await daemonClient.AcquireTokenForClientAsync(_scopes);
            string token = authResult.AccessToken;
            requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", token);
        }
   )
);
_

だから私はvar user = await graphClient.Me.Request().GetAsync();を実行しようとします

エラーが発生します:

AADSTS70011:入力パラメーター 'scope'に指定された値が無効です。スコープuser.readは無効です。

また、_User.ReadBasic_だけをスコープとして使用しようとしましたが、同じエラーが発生しました。ここで何が悪いのですか?

11
sidi shah

ここでは、クライアント資格情報フローを使用しています。つまり、スコープを動的に要求することはできません。 apps.dev.Microsoft.comのアプリ登録で必要なアクセス許可スコープを構成し、コードのスコープの値をhttps://graph.Microsoft.com/.defaultに設定する必要があります。

詳細は https://developer.Microsoft.com/en-us/graph/docs/concepts/auth_v2_service を参照してください。

13
Jason Johnston