Microsoft.Azure.Mobile.Client.SQLiteStore LoginAsync返回"代码":404

时间:2017-06-15 20:51:55

标签: xamarin.forms azure-mobile-services

我已将我的Xamarin.Forms应用程序从Microsoft.WindowsAzure.Mobile.SQLStore升级到Microsoft.Azure.Mobile.Client.SQLiteStore。我的身份验证是这样实现的:

public async Task<MobileServiceUser> Authorize(MobileServiceAuthenticationProvider provider, IMobileServiceClient client)
{
    return await client.LoginAsync(AppDelegate.MainView.RootViewController, provider);
}

但是身份验证对话框现在显示以下消息:

{"code":404 "error":"Error: Not Found" } 

我使用Google,Microsoft和Facebook身份验证。在升级之前,此身份验证工作完全正常。我试图通过this documentation,但它基于一些我无法重新创建的示例项目。有什么想法为什么不再工作了?

1 个答案:

答案 0 :(得分:2)

  

我使用Google,Microsoft和Facebook身份验证。在升级之前,此身份验证工作完全正常。

根据我的理解,您的移动后端由Azure Mobile Services托管(网址如:service.azure-mobile.net)。

Microsoft.Azure.Mobile.Client.SQLiteStore具有Microsoft.Azure.Mobile.Client的依赖关系,用于连接Azure Mobile Apps。从Microsoft.WindowsAzure.Mobile.SQLStore升级到Microsoft.Azure.Mobile.Client.SQLiteStore后,系统会自动安装Microsoft.Azure.Mobile.Client

对于来自MobileServiceClient的{​​{1}},具有特定提供商的Microsoft.Azure.Mobile.Client方法将按如下方式发送请求:

LoginAsync
  

{“code”:404“错误”:“错误:找不到”}

总之,如果您想使用http(s)://{your-mobile-backend-URL}/.auth/login/{provider-name} ,那么您的移动后端需要由Azure移动应用托管,您可以将其视为Azure移动服务V2。此外,在处理登录操作以解决此问题时,您可以利用fiddler来收集网络跟踪。另外,您可以参考Migrate your existing Azure Mobile Service to Azure App Service

<强>更新

我查看了有关Microsoft.Azure.Mobile.Client.SQLiteStore的源代码,并在MobileServiceTokenAuthentication.cs下找到了Microsoft.Azure.Mobile.Client方法。您可以指定LoginAsyncOverride来覆盖由MobileServiceAuthentication.cs配置为MobileServiceClient.LoginUriPrefix的{​​{1}}字段指定的登录前缀。

对于移动服务后端和使用移动应用客户端SDK,我假设您可以使用以下代码:

LoginAsyncUriFragment

注意:我刚刚测试了登录操作,您需要检查您的移动客户端并验证相关操作是否可以按预期工作。此外,我仍然建议您尝试将移动服务升级到azure移动应用程序以获得更强大的功能。您可以参考Mobile Services vs. App Service了解更多详情。