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()。
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。在線程詳細信息在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);
謝謝,我在上面的代碼嘗試,但(控件作爲Windows.UI.Xaml.Controls.Page).Frame是返回NULL –