xamarin.auth 1.3.2版本是支持UWP应用程序。我已经在Android和iOS中创建并实现了如下
的应用程序
PresentViewController (auth.GetUI (), true, null);
和适用于Android:
StartActivity (auth.GetUI (this));
我想知道如何在xamarin.form uwp Renderer中使用auth.getui()。
UWP项目中auth.GetUI ()
的返回类型是Windows.UI.Xaml.Controls.Page
。因此,您可以在UWP项目中创建自定义PageRenderer
,并将本机控制设置为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
{
}
}
我遇到了同样的问题,从一开始就一直关注帖子,因为我试图同时做同样的事情。我有一个共享项目和一个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-usis-using-xamarin-auth/。我遵循其中提到的说明,它效果很好。
希望它能帮助某人。
我(主要是)在UWP上工作了。线程中的详细信息https://github.com/xamarin/xamarin.auth/issues/146。该线程(主要)的详细信息。
直接回答您的问题是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);