我正在努力解决我不知道如何解决的Xamarin Forms(iOS)/ Azure移动服务/ Facebook问题 . 我想要做的是使用AMS登录Facebook,然后通过自定义控制器将该用户的详细信息保存到服务端数据库 . 我在后端运行Azure移动服务 .

我所拥有的是成功登录Facebook用户的以下代码 .

var fbUser = await DependencyService.Get<IMobileClient>().LoginAsync(MobileServiceAuthenticationProvider.Facebook);

然后我想将fbUser保存到我正在使用所有已配置的ASP.NET标识表的数据库中 . 我想使用此用户访问Facebook用户的 Profiles 信息 . 因此,我有一个后端服务自定义控制器操作,如下所示:

[Route("logintofacebook")]
    [AuthorizeLevel(AuthorizationLevel.Anonymous)]
    public async Task<IHttpActionResult> LoginToFacebook(MobileServiceUser msUser)
    {
        try
        {
            if (msUser != null)
            {
                var serviceUser = User as ServiceUser;
                var identities = await serviceUser.GetIdentitiesAsync();

                var result = new JObject();
                var fb = identities.OfType<FacebookCredentials>().FirstOrDefault();

                if (fb == null)
                {
                    return NotFound();
                }

                var googleCredentials = identities.OfType<GoogleCredentials>().FirstOrDefault();
                var azure = identities.OfType<MicrosoftAccountCredentials>().FirstOrDefault();

                var accessToken = fb.AccessToken;
                result.Add("facebook",
                    await GetProviderInfo("https://graph.facebook.com/me?access_token=" + accessToken));

                var email = GetUserInfo(result);
                var userTypeId = UTypes.Facebook;

在后端进行调试时,MobileServiceUser是一个有效的对象,我可以检查令牌和Facebook用户ID,它们与客户端上创建的一样 . 但是,突出显示的行返回零身份 . 这意味着 fb 变量最终为空 .

问题是,为什么上面的serviceUser变量没有返回任何身份?

以下是使用jwt.io调试时调试的AMS令牌的样子

{
  "iss": "urn:microsoft:windows-azure:zumo",
  "aud": "urn:microsoft:windows-azure:zumo",
  "nbf": 1446872000,
  "exp": 1449464000,
  "urn:microsoft:credentials": "{\"accessToken\":\"CAAL2gwRM4RYBAKV9Wp0Evjp2aATnm5OIHHc15ujJfeevqCW6DoI36HOQCOYq96xUjZA6VXwovnkBOlY0SkC9nrdwr8jdbF3qJdtK4GAHVk9SGxKVYUZBJ4UwPqQmb5yka93GzL0Fl86m93LnqTffIPJ6vkMfpP0ZAroKzmcJxM1pJ7BAAAA\"}",
  "uid": "Facebook:0000000000000000",
  "ver": "2"
}

(我用零替换了facebook部分)

谢谢

Ø