使用Azure移动应用程序将身份验证添加到UWP应用程序作为后端

时间:2017-06-26 11:00:05

标签: c# azure uwp azure-mobile-services

我正在使用UWP应用,要求用户使用MicrosoftGoogle等社交身份提供商进行登录。 我已经按照快速入门指南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登录弹出窗口成功显示,但是当用户登录时,弹出窗口不会消失,控件永远不会返回到应用程序。以下是截图: enter image description here

如果我手动关闭弹出窗口,则会抛出异常: Authentication was cancelled by the user

这是一个Microsoft.Azure.Mobile.Client Nuget包版本问题,还是我在这里遗漏了一些东西。

非常感谢任何帮助。

2 个答案:

答案 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项目中使用相同的名称。否则即使登录成功,您最终会使用此屏幕而不是重定向回应用程序。