我已将我的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,但它基于一些我无法重新创建的示例项目。有什么想法为什么不再工作了?
答案 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了解更多详情。