Azure移动服务后端serviceUser未按预期返回Facebook身份
我正在努力解决Xamarin Forms iOS/Azure移动服务/Facebook问题,我不知道如何解决这个问题。我正在尝试使用AMS登录Facebook,然后通过自定义控制器将该用户的详细信息保存到服务端数据库。我正在后台运行Azure移动服务 我所拥有的是下面成功登录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
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。我会试试看,稍后在这里发布。