如何将Xamarin.Auth用于UWP登录渲染器
Xamarin.Auth 1.3.2版本是support UWP app。 我已经创建并在Android和IOS实现的应用程式,例如下面如何将Xamarin.Auth用于UWP登录渲染器
PresentViewController (auth.GetUI(), true, null);
和安卓
StartActivity (auth.GetUI (this));
我希望得到知道如何在xamarin.Form UWP渲染器中使用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项目(代表我没有安卓)。我对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);
谢谢,我在上面的代码尝试,但(控件作为Windows.UI.Xaml.Controls.Page).Frame是返回NULL –