Xamarin auth查看关闭问题

时间:2017-02-23 20:31:18

标签: ios xamarin.ios xamarin.forms

我正在使用Xamarin.Auth plugin实现facebook登录Xamarin表单proejct。这是ios渲染代码。

单击取消按钮或成功登录后,将调用dismissviewcontroller并关闭Web视图。

当我再次点击此Facebook或登录按钮时,我收到以下错误。

  

警告:尝试出现   其视图不在窗口层次结构中!

如果有人有一个好的解决方案,请帮助我。

numpy

1 个答案:

答案 0 :(得分:1)

更新答案

在FBLoginPage中添加一个公共方法。

public partial class FBLoginPage : ContentPage
{
    //......

    public void OnAuthenticationCompleted (bool isAuthenticated, string accessToken)
    {
        //Get your token and do what you need to do with it.
        Navigation.PopModalAsync (true);
    }
}

并且您的渲染器类将其更改为:

public override void ViewDidAppear (bool animated)
{
    base.ViewDidAppear (animated);

    if (!IsShown)
    {
        IsShown = true;

        var auth = new OAuth2Authenticator(
            clientId: App.Instance.FBAuthSettings.ClientId,
            clientSecret: App.Instance.FBAuthSettings.SecurityKey,
            accessTokenUrl: new Uri(App.Instance.FBAuthSettings.AccessTokenUrl),
            scope: App.Instance.FBAuthSettings.Scope,
            authorizeUrl: new Uri(App.Instance.FBAuthSettings.AuthorizeUrl),
            redirectUrl: new Uri(App.Instance.FBAuthSettings.RedirectUrl));

        auth.Completed += (sender, eventArgs) => {

            var element = Element as LoginPage;

            var token = eventArgs.IsAuthenticated ? eventArgs.Account.Properties ["access_token"] : null;

            element?.OnAuthenticationCompleted (eventArgs.IsAuthenticated, token);
        };

        PresentViewController (auth.GetUI (), true, null);
    }

}

关于更新。

此组件自2年前未更新,但nuget package是。我建议从组件更改为Nuget包。

祝你好运。