Azure AD B2C 用户信息 Xamarin

Azure AD B2C user info Xamarin

您好,我正在尝试使用 Azure AD B2C 进行身份验证,在 Xamarin 应用程序中获取姓名和地址等用户信息。

到目前为止,我的身份验证工作正常

public async Task<MobileServiceUser> LoginAsync(MobileServiceClient client, MobileServiceAuthenticationProvider provider)
{
  try
  {
    //login and save user status
    var user = await client.LoginAsync(Forms.Context, provider);

    Settings.AuthToken = user?.MobileServiceAuthenticationToken ?? string.Empty;
    Settings.UserId = user?.UserId ?? string.Empty;
    return user;
  }
  catch (Exception e)
  {
  }

  return null;
}

但是我想知道如何获取用户的姓名和生日。我还没有找到明确的行动方案。

您没有使用 MobileService SDK 明确获取此信息。查看有关 App Service Authentication/Authorization here 的完整文档。

您将达到它提到的地步:

Your application can also obtain additional user details through an HTTP GET on the /.auth/me endpoint of your application. A valid token that's included with the request will return a JSON payload with details about the provider that's being used, the underlying provider token, and some other user information. The Mobile Apps server SDKs provide helper methods to work with this data.

因此,在您的 Xamarin 中,在用户成功验证后,您必须显式向 /.auth/me 发出 HTTP GET 请求并解析结果以获取有关已登录用户的所有信息。

不确定如何在 Xamarin 中执行此操作,但以下是如何在 C# UWP(通用 Windows 平台)中执行此操作:

                var url = App.MobileService.MobileAppUri + "/.auth/me";
                var clent = new Windows.Web.Http.HttpClient();
                clent.DefaultRequestHeaders.Add("X-ZUMO-AUTH", this.user.MobileServiceAuthenticationToken);
                var userData = await clent.GetAsync(new Uri(url));

在此代码执行时,userData 变量将是一个包含所有用户声明的 JSON srting。