我一直在玩MSAL Microsoft.Identity.Client.ConfidentialClientApplication来执行应用程序唯一的Microsoft Graph - Groups操作。如何使用ConfidentialClientApplication执行仅适用于Graph(Group.ReadWrite.All)的请求
var RedirectUri = "urn:ietf:wg:oauth:2.0:oob"; var clientApplication = new ConfidentialClientApplication(ClientId, RedirectUri, new ClientCredential(ClientSecret), null);
我被困在接下来的步骤:
authenticationResult = clientApplication.AcquireTokenSilentAsync(new string[]{"Group.ReadWrite.All"}).GetAwaiter().GetResult();
我得到错误failed_to_acquire_token_silently
authenticationResult = clientApplication.AcquireTokenForClient(new string[]{"Group.ReadWrite.All"}, string.Empty).GetAwaiter().GetResult();
我得到错误invalid_scope
不知道我应该继续哪个方向。
(注 - 与PublicClientApplication相同的代码工作正常 - 应用既有AppOnly Group.ReadWrite.All和代表Group.ReadWrite.All权限 - 与PublicClienApplication有不必要的UI对话框...)
var clientApplication = new PublicClientApplication(ClientId); authenticationResult = clientApplication.AcquireTokenAsync(Scopes).GetAwaiter().GetResult();
为了澄清,您是否试图在没有同意屏幕的情况下使用“group.readwrite.all”范围获取访问令牌? ('不需要的ui对话框')? –
我想通过只有clientid/clientsecret的无人参与脚本获取访问令牌。 通过PublicClientApplication的'unwanted ui dialog'会停止该流程。 –
你是否首先同意你正在尝试使用的应用程序?无论您创建什么类型的应用程序,您都需要获得用户第一次同意该应用程序,以便记录同意。之后,您应该能够在用户不在场的情况下进行后续呼叫。如果您在这里需要更多说明,请告诉我,我会为您写一个“答案”。 –