【发布时间】:2020-10-26 21:18:02
【问题描述】:
我即将完全放弃这个工作流程。
我使用 REST API、其他一些东西以及 b2c AD 设置了一个 Azure 帐户。经过数小时和数小时的厌恶生活后,我终于(在某种程度上)可以使用此广告登录,并被要求访问 REST API。
我现在遇到的问题是,我已经尝试了所有我能找到的关于如何获取登录者的个人资料信息的所有变体,但我一无所获。
即使登录后的示例文件也无法正常工作 - 它旨在将您重定向到显示欢迎(用户名)但用户名未在我的结果中返回的页面
result = await App.AuthenticationClient
.AcquireTokenInteractive(B2CConstants.Scopes)
.WithPrompt(Microsoft.Identity.Client.Prompt.SelectAccount)
.WithParentActivityOrWindow(App.UIParent)
.ExecuteAsync();
这些都不是最直观的。我读过文档,但不知何故,每次我用谷歌搜索它时,我都会在不同的 Microsoft 文档页面上找到不同的信息。
我不知道我需要传递给作用域...登录后)。
即使我成功使用 google 登录,上面的结果也给了我一个 NULL 访问令牌、null 租户 id、null 范围、null 帐户下的用户名...唯一正确的是唯一 ID 与我在 AD 用户页面上看到的 ID。
编辑:AccessToken 实际上不为空,我在那里获取信息...但是我尝试进行的每个我认为应该使用它的调用都失败了。
即,如果我在登录后尝试调用它来获取我的信息:
InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(App.AuthenticationClient, B2CConstants.Scopes);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var users = await graphClient.Me.Request().GetAsync();
请注意,App.AuthenticationClient 是我在上面登录时使用的 - 我也尝试过
//.Create(B2CConstants.ClientId)
//.Build();
我明白了(只有部分错误,所以我没有传递 ID)
Microsoft.Graph.ServiceException: 'Code: InvalidAuthenticationToken
Message: Access token validation failure.
Inner error:
AdditionalData:
date: 2020-10-26T21:45:25
【问题讨论】:
-
如果要调用Microsoft graph,需要获取Azure AD access token。根据您的代码,您似乎获得了 b2c 令牌来调用 Microsoft Graph。 B2C租户中如何调用Microsoft graph,请参考docs.microsoft.com/en-us/azure/active-directory-b2c/…
标签: c# azure xamarin.forms azure-ad-b2c microsoft-graph-sdks