したがって、特定の条件でグループ化するユーザーをアプリケーションで追加する必要があるシナリオがあります。また、アプリケーションの実行開始時に、ユーザーに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
_だけをスコープとして使用しようとしましたが、同じエラーが発生しました。ここで何が悪いのですか?
ここでは、クライアント資格情報フローを使用しています。つまり、スコープを動的に要求することはできません。 apps.dev.Microsoft.comのアプリ登録で必要なアクセス許可スコープを構成し、コードのスコープの値をhttps://graph.Microsoft.com/.default
に設定する必要があります。
詳細は https://developer.Microsoft.com/en-us/graph/docs/concepts/auth_v2_service を参照してください。