Xamarin.Auth PageRenderer 在用户通过身份验证后重定向到 PCL 中的页面

Xamarin.Auth PageRenderer redirect to Page in PCL after user authenticated

大家好,打开 PageRenderer (Xamarin.Auth) 身份验证,在本地和后端持久化数据我想关闭当前 Activity 并使用来自 Fb、Twitter 的信息打开注册表单或页面或 Gmail。获取此信息很容易,因为它是使用 SQLite 在本地保存的,但我的问题是关闭当前页面并打开新页面 (Activity),因为我的注册页面位于 PCL(视图)中,我使用的是 MVVMLight。

在 Android 上,我使用 MessagingCenter 弹出我用来显示 Xamarin Auth 登录 WebView 的登录页面模式。所以它看起来像这样(请注意,我将 LoginPage 显示为模态):

内容页:

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");
    }
}

我的登录页面呈现器中的:

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" 事件,而是从 auth.Completed.

中调用 DismissViewController(true, null);