Xamarin.Auth 1.3.2 版本支持 UWP 应用。我已经在 Android 和 IOS 中创建并实现了应用程序,如下所示
PresentViewController (auth.GetUI (), true, null);
对于安卓:
StartActivity (auth.GetUI (this));
我想知道如何在 xamarin.Form UWP 渲染器中使用 auth.GetUI() 。
Xamarin.Auth 1.3.2 版本支持 UWP 应用。我已经在 Android 和 IOS 中创建并实现了应用程序,如下所示
PresentViewController (auth.GetUI (), true, null);
对于安卓:
StartActivity (auth.GetUI (this));
我想知道如何在 xamarin.Form UWP 渲染器中使用 auth.GetUI() 。
我有这个(主要)在 UWP 上工作。https://github.com/xamarin/Xamarin.Auth/issues/146的线程中的详细信息。(大部分)的细节也在那个线程中。
我被同样的问题困住了,我从一开始就关注这个帖子,因为我试图同时做同样的事情。我有一个共享项目、一个 iOS 项目和一个 UWP 项目(我没有 Android)。我对 iOS 没有任何问题,它就像一个魅力。但是,我无法使用 UWP 完成 PageRenderer。
所以我听从了 Nico Zhu 的建议。我在我的 UWP 项目中添加了一个 Xaml 用户控件。如上所述,我还在 Xaml 中添加了框架。但是当执行 Myframe.Navigate(auth.GetUI()) 语句时,出现“Xaml 解析失败”错误
但后来我发现了这个:http ://damianblog.com/2016/09/04/uwp-oauth-in-xamarin-forms-using-xamarin-auth/ 。我按照其中提到的说明进行操作,效果很好。
希望它会帮助某人。
您的问题的直接答案是 UWP 的以下代码片段:
Windows.UI.Xaml.Controls.Frame root_frame = Windows.UI.Xaml.Window.Current.Content as Windows.UI.Xaml.Controls.Frame;
root_frame.Navigate(auth.GetUI(), auth);
auth.GetUI ()
UWP 项目中 的返回类型为Windows.UI.Xaml.Controls.Page
. PageRenderer
因此,您可以在 UWP 项目中创建自定义并设置本机控件,Windows.UI.Xaml.Controls.Page
就像下面的代码一样。
用法
public class LoginPageRenderer : PageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
if (Control == null)
{
SetNativeControl(new NativeLoginPage());
}
}
}
NativeLoginPage
为 NativeLoginPage 添加框架 <Frame x:Name="Myframe " />
。
private void btn_Click(object sender, RoutedEventArgs e)
{
var auth = new OAuth2Authenticator(
clientId: "",
scope: "",
authorizeUrl: new Uri(""),
redirectUrl: new Uri("")
);
auth.Completed += Auth_Completed;
var page = auth.GetUI();
Myframe.Navigate(auth.GetUI());
}
private void Auth_Completed(object sender, AuthenticatorCompletedEventArgs e)
{
if (e.IsAuthenticated)
{
}
else
{
}
}