Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure移动服务后端serviceUser未按预期返回Facebook身份_Facebook_Xamarin_Azure Mobile Services - Fatal编程技术网

Azure移动服务后端serviceUser未按预期返回Facebook身份

Azure移动服务后端serviceUser未按预期返回Facebook身份,facebook,xamarin,azure-mobile-services,Facebook,Xamarin,Azure Mobile Services,我正在努力解决Xamarin Forms iOS/Azure移动服务/Facebook问题,我不知道如何解决这个问题。我正在尝试使用AMS登录Facebook,然后通过自定义控制器将该用户的详细信息保存到服务端数据库。我正在后台运行Azure移动服务 我所拥有的是下面成功登录Facebook用户的代码 var fbUser = await DependencyService.Get<IMobileClient>().LoginAsync(MobileS

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

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

                var fbUser = await DependencyService.Get<IMobileClient>().LoginAsync(MobileServiceAuthenticationProvider.Facebook);
然后,我想将fbUser保存到使用ASP.NET标识表(所有配置)的数据库中。我想使用此用户访问facebook用户的个人资料信息。因此,我有一个后端服务自定义控制器操作,如下所示:

    [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变量最终为null

问题是,为什么上面的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部分替换为零

谢谢


O如果没有一些额外的调试信息,很难说。恒等式变量是什么样子的?服务用户?我总是觉得检查JWT本身很有帮助。您可以使用类似的工具查看有效负载部分的外观。应该有一个随附的fb访问令牌.Thx。我会试试看,稍后在这里发布。