我正在使用Xamarin.Auth plugin实现facebook登录Xamarin表单proejct。这是ios渲染代码。
单击取消按钮或成功登录后,将调用dismissviewcontroller并关闭Web视图。
当我再次点击此Facebook或登录按钮时,我收到以下错误。
警告:尝试出现 其视图不在窗口层次结构中!
如果有人有一个好的解决方案,请帮助我。
numpy
答案 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包。
祝你好运。