Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication MvvmCross能否使用外部部件内部定义的第三方视图(即它无法控制的平台特定视图)?_Authentication_Xamarin_Mvvmcross_Azure Mobile Services - Fatal编程技术网

Authentication MvvmCross能否使用外部部件内部定义的第三方视图(即它无法控制的平台特定视图)?

Authentication MvvmCross能否使用外部部件内部定义的第三方视图(即它无法控制的平台特定视图)?,authentication,xamarin,mvvmcross,azure-mobile-services,Authentication,Xamarin,Mvvmcross,Azure Mobile Services,为什么? 我正在尝试创建一个Mvx身份验证插件,该插件尽可能重用现有的第三方代码及其特定于平台的UI。有一些关于如何在另一个程序集中引用Mvx特定视图/视图模型的SO帖子,但我想知道Mvx是否有任何方法支持导航到和/或显示它未创建/控制的视图/视图模型 我假设我必须以某种方式告诉Mvx“额外的外部登录视图”才能让它工作,但我不知道当我无法控制外部DLL中提供的特定于平台的视图/视图模型时,是否可以这样做 当前不起作用的方法 让我们调用我的Mvx AuthN插件: Acme.MvvmCross.P

为什么?

我正在尝试创建一个Mvx身份验证插件,该插件尽可能重用现有的第三方代码及其特定于平台的UI。有一些关于如何在另一个程序集中引用Mvx特定视图/视图模型的SO帖子,但我想知道Mvx是否有任何方法支持导航到和/或显示它未创建/控制的视图/视图模型

我假设我必须以某种方式告诉Mvx“额外的外部登录视图”才能让它工作,但我不知道当我无法控制外部DLL中提供的特定于平台的视图/视图模型时,是否可以这样做

当前不起作用的方法

让我们调用我的Mvx AuthN插件:

Acme.MvvmCross.Plugins.Authentication
该插件的核心PCL只包含一些PCL友好的枚举、简单的POCO以及相关平台特定插件项目将实现的
iaAuthenticationProvider

随着时间的推移,各种第三方“身份验证网关”可能会被支持为
IAuthenticationProvider
接口的有效平台特定实现

Mvx插件将支持的第一个第三方是Windows Phone 7.5/8和Win8上的“Windows Azure移动服务(AMS)”。AMS已经提供了一个C#PCL来在WP7/8和Win 8:上提供身份验证,我将在稍后添加Xamarin提供的iOS/Droid实现

AMS的方法是拥有一个核心PCL:
Microsoft.WindowsAzure.Mobile
他们还根据需要将该核心与特定于平台的扩展和UI视图相结合

示例:

在我的插件的WP75特定库项目(
Acme.MvvmCross.Plugins.Authentication.WindowsPhone
)中,AMS NuGet引用了以下内容:

Microsoft.WindowsAzure.Mobile
Microsoft.WindowsAzure.Mobile.Ext.WP75
Microsoft.WindowsAzure.Mobile.UI.WP75
请注意,我的插件的核心PCL(
Acme.MvvmCross.Plugins.Authentication
)没有引用任何这些AMS DLL

我能够在我的应用程序的PCL核心和应用程序的客户端特定项目中引用和使用上述Mvx插件,但我无法在WP7/8客户端上显示平台特定的“登录视图”(由AMS SDK提供),当我调用AMS的LoginAsync方法时,它们只是锁定

示例:

如果您不使用Mvx,AMS示例将显示特定于客户端的项目如何调用其共享“”方法,通过这样做,它们提供的特定于客户端的扩展和UI将神奇地显示身份验证提供商的屏幕,以允许用户登录(例如,Twitter在手机上的web视图中登录)

当我从我的Mvx应用程序的
LoginViewModel
(通过使用我的Mvx插件的同一应用程序中的Mvx服务)调用AMS的
LoginAsync
,AMS提供的自定义登录UI不会显示,客户端只是锁定

是否有任何方法可以通过Mvx插件模型重用现有/正在进行的Azure/Xamarin AMS工作,或者这不会发生


注意:AMS SDK源代码可从Microsoft和Xamarin获得,但如果我必须维护这两个回购协议的自定义MVX特定分支,以使其按需工作,我可能会避免这种方法。

您可以执行类似的操作。基本上,您可以使用messenger并在每个平台的视图中侦听身份验证消息,以显示您的登录UI,并在完成后发回消息


我正在以类似的方式使用旧的Azure ACS控件(触发消息以显示它们,并绑定到usercontrol上的事件以获得结果)

这与使用内置视图/任务捕获照片类似吗?在哪种情况下,图片选择器插件的源代码有帮助?斯图尔特(在手机上)我不确定。如果最终我的Mvx服务调用底层的“LoginAsync”(由我的插件包装Azure DLL提供),它会神奇地尝试加载/导航到此PhoneApplicationPage,那么它是否“正常工作”或者我需要帮助Mvx了解如何处理这个本机WP8页面,以便在用户单击显示登录选项列表的MvxPhonePage上的身份验证提供程序后显示它吗?使用MvxPictureChooser&EMail插件作为指南,了解他们如何使用“MvxWindowsPhoneTask”是朝着正确方向迈出的一步。我能够让AMS客户端最终像预期的那样显示twitter的登录屏幕!我不得不使用“DOWITINVALIDOPERATIONProtection”的操作参数,尽管如此,我目前正在丢失返回类型&不再进行错误检查。我在使用您的插件作为指南时做了一些事情,但似乎不正确,因此我将对其进行清理,然后询问我是否正确使用了Mvx,然后我/我们才能在此处发布更新的答案。谢谢你的提示!谢谢你的提示,我来看看。如果您查看我在原始问题下对Stuart的评论,您是否确定在AMS DLL中使用对“LoginAsync”的简单直接调用在不使用基于messenger的方法的情况下肯定不会显示auth provider的登录屏幕?也就是说,我是否可以让它按预期工作(调用LoginAsync并让它的内置登录视图显示自己)或者根据你的理解,在Mvx中,如果没有这种解决方法,这是不可能的?EShy-我认为答案将是Stuart在上面建议的领域,因为我能够使用这种插件方法,只需调用LoginAsync而不必传递消息。在这里接受/输入答案之前,我想看看最终答案是什么样子。谢谢