我正在使用UWP
应用,要求用户使用Microsoft
,Google
等社交身份提供商进行登录。
我已经按照快速入门指南here进行了操作,该指南介绍了如何添加身份验证。
在UWP
快速入门应用中,已安装的Microsoft.Azure.Mobile.Client
版本为3.1.0
,如果我将其升级到最新版本即4.0.0
,则会在该行上引发错误LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount)
LoginAsync
没有带有1个参数的重载方法。为解决此问题,我在方法中添加了SingleSignOn
参数boolean
var user = await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount, true);
当我运行应用程序时,Microsoft登录弹出窗口成功显示,但是当用户登录时,弹出窗口不会消失,控件永远不会返回到应用程序。以下是截图:
如果我手动关闭弹出窗口,则会抛出异常:
Authentication was cancelled by the user
这是一个Microsoft.Azure.Mobile.Client
Nuget包版本问题,还是我在这里遗漏了一些东西。
非常感谢任何帮助。
答案 0 :(得分:1)
好的,我现在回答你的问题,因为我几秒钟就能解决它。
所以你正在使用UWP,我正在使用模板10,并且我已经能够根据我发现的内容更新到v4.0.0或v4.0.1,因为谷歌身份验证已停止允许用于身份验证的Web视图以及对Azure-Mobile-Net-Client团队的关注是,如果您感兴趣,所有OAuth提供商将在未来基于您可以在此处找到的文章采用该行为: Modernizing OAuth interactions in Native Apps for Better Usability and Security
在此之后我们正处于一个重大变化的中间,所以为了使其工作,您需要设置您的移动应用程序服务以允许使用url_scheme_of_your_app进行外部重定向,如微软文档教程所示。
所以这一步是下一步:
1.-转到Azure门户
2.-转到您的MobileApp服务
3.-选择身份验证/授权
4.-在允许的外部重定向URL上写下:{urischeme}://easyauth.callback (意思是urischeme必须是以字母开头的字母数字字。)
5.-保存更改。
现在你完成了这项工作后,你必须在你的客户上工作 然后,如果您正在使用UWP,请遵循以下教程: Add Authentication to your UWP.
这应该就够了,如果你使用的是模板10,你所要做的就是在OnStartAsync上使用这个代码:
if(startKind == StartKind.Activate)
{
ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;
cloudService.ResumeWithUrl(protocolArgs.Uri);
}
你在本教程中保存了大量的代码,因为你必须在OnNavigatedTo()方法和App.Xaml.cs的OnActivated()方法中编写代码
UWP和模板10中的体系结构,它就像Application类的包装器,简化了它的使用。
希望这对您有所帮助,您也会注意到,当您首次使用urischeme登录您的应用时,它会打开您的默认浏览器并在成功登录后保持打开状态。
此外,singlesignon重载法根本不起作用,他们仍在处理这些问题。
希望我的回答可以帮助你!!!
答案 1 :(得分:0)
我只是想在uwp上添加我的xamarin.forms解决方案,这应该与我们在本机级别重定向和登录时实际相同。我遵循了这篇文章https://docs.microsoft.com/en-us/azure/app-service-mobile/app-service-mobile-xamarin-forms-get-started-users
但是当您定义返回网址时,您的应用部分的网址方案会有些混乱。 基本上你在4个地方定义了返回网址,它们听起来像是一样但是它们是不同的
1)你在facebook开发者页面上定义。它应该(使用https)https://myapi.azurewebsites.net//easyauth.callback
2)在天蓝色门户网站上,允许外部重定向网址 在这里添加2:https://myapi.azurewebsites.net//easyauth.callback,myapp // easyauth.callback
3)uwp包清单声明。添加myapp作为名称 4)登录对azure移动服务的调用:Client.LoginAsync(provider,“myapp”);
因此,基本上myapp(这是您选择的名称)应该在azure门户网站中使用,并且在您的uwp项目中使用相同的名称。否则即使登录成功,您最终会使用此屏幕而不是重定向回应用程序。