Microsoft Azure B2C-获取配置文件信息



我马上就要完全放弃这个工作流程了。

我用REST API和其他一些东西建立了一个Azure帐户,然后是b2c AD。在讨厌我的生活数小时后,我终于(在某种程度上(使用这个AD登录,并被要求访问REST API。

我现在遇到的问题是,我已经尝试了我能找到的每一种变体,只是关于如何获取登录者的个人资料信息,但我一无所获。

即使是登录后的示例文件也不能正常工作——它旨在将您重定向到一个显示欢迎(用户名(的页面,但用户名不会在我的结果中返回到

result = await App.AuthenticationClient
.AcquireTokenInteractive(B2CConstants.Scopes)
.WithPrompt(Microsoft.Identity.Client.Prompt.SelectAccount)
.WithParentActivityOrWindow(App.UIParent)
.ExecuteAsync();

这些都不是一点直观的。我读过文档,但不知怎么的,每次我在谷歌上搜索时,我都会在不同的微软文档页面上找到不同的信息。

我不知道我需要传递给示波器什么。。。我不知道如何属性获取身份验证令牌,因为每次我尝试使用图时,我都会收到一个关于空或无效身份验证令牌的错误(即使在登录后(。

尽管我成功登录了谷歌,但上面的结果给了我一个空访问令牌、空租户id、空作用域、空帐户下的用户名。。。唯一正确的是唯一的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文档来了解任何信息

考虑以下代码以从B2C获取用户详细信息(这是Android Xamarin Forms page.cs代码(

async void OnSignInSignOut(object sender, EventArgs e)
{
AuthenticationResult authResult = null;
IEnumerable<IAccount> accounts = await App.PCA.GetAccountsAsync();
try
{
if (btnSignInSignOut.Text == "Sign in")
{
try
{
IAccount firstAccount = accounts.FirstOrDefault();
authResult = await App.PCA.AcquireTokenSilent(App.Scopes, firstAccount)
.ExecuteAsync();
}
catch (MsalUiRequiredException ex)
{
try
{
authResult = await App.PCA.AcquireTokenInteractive(App.Scopes)
.WithParentActivityOrWindow(App.ParentWindow)
.ExecuteAsync();
}
catch(Exception ex2)
{
await DisplayAlert("Acquire token interactive failed. See exception message for details: ", ex2.Message, "Dismiss");
}
}
if (authResult != null)
{
var content = await GetHttpContentWithTokenAsync(authResult.AccessToken);
UpdateUserContent(content);
Device.BeginInvokeOnMainThread(() => { btnSignInSignOut.Text = "Sign out"; });
}
}
else
{
while (accounts.Any())
{
await App.PCA.RemoveAsync(accounts.FirstOrDefault());
accounts = await App.PCA.GetAccountsAsync();
}
slUser.IsVisible = false;
Device.BeginInvokeOnMainThread(() => { btnSignInSignOut.Text = "Sign in"; });
}
}
catch (Exception ex)
{
await DisplayAlert("Authentication failed. See exception message for details: ", ex.Message, "Dismiss");
}
}

有关B2C集成的完整和逐步的示例,您可以访问以下链接:

  • 使用MSAL将Microsoft标识和Microsoft Graph集成到Xamarin表单应用程序中
  • 使用MSAL将Azure AD B2C集成到Xamarin表单应用程序中

最新更新