嘿大家打开PageRenderer(Xamarin.Auth)身份验证,在本地和后端保存数据我想关闭当前的Activity并使用来自Fb,Twitter或Gmail的信息打开注册表单或页面。很容易得到这个信息,因为它是使用SQLite本地保存但我的问题是关闭当前页面并打开新页面(活动),因为我的注册页面在PCL(视图)我使用MVVMLight。
答案 0 :(得分:0)
在Android上,我使用MessagingCenter
弹出我用来显示Xamarin Auth登录WebView的Login Page模式。所以它看起来像这样(注意我将LoginPage
显示为模态):
ContentPage:
public class LoginPage : ContentPage {
public LoginPage() { }
protected override async void OnAppearing() {
base.OnAppearing();
MessagingCenter.Unsubscribe<string>(this, "LoginPageDone");
MessagingCenter.Subscribe<string>(this, "LoginPageDone", async errorMessage => await Navigation.PopModalAsync());
}
protected override void OnDisappearing() {
base.OnDisappearing();
MessagingCenter.Unsubscribe<string>(this, "LoginPageDone");
}
}
在我的LoginPage呈现器中:
public class LoginPageRenderer : Xamarin.Forms.Platform.Android.PageRenderer {
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Page> e) {
base.OnElementChanged(e);
if(e.OldElement != null || Element == null) { return; }
LoginPage page = (LoginPage)Element;
Xamarin.Auth.OAuth2Authenticator auth = new Xamarin.Auth.OAuth2Authenticator();
auth.Completed += async (sender, eventArgs) => {
//Do some eventArgs.IsAuthenticated stuff
Xamarin.Forms.MessagingCenter.Send("something", "LoginPageDone"); //Call the event to pop the page
}
}
}
为了完整起见,在iOS上,我没有调用"LoginPageDone"
事件,而是从DismissViewController(true, null);
内拨打auth.Completed
。