私はXamarin PCLのFacebookログインを統合しています。私はサンプル「コミックブック」https://github.com/moljac/Xamarin.Auth.Samples.NugetReferencesに続き、私のアプリケーションにログインプロセスを統合しました。しかし、oauthプレゼンターがXamarin PCLプロジェクトから呼び出され、iOSのアプリにFacebookのUIを表示する間、私は以下の例外を受けています。私は、ログインのためにFacebookのUIを呼び出すために私が使用するコードを提供しています。OAuthプレゼンターを使用してUINavigationControllerを提示しようとしました
エラー: 警告:UINavigationControllerを提示しようとしています。Xamarin_Forms_Platform_iOS_PlatformRendererの0x7ffa01275a00:ビューウィンドウ階層ではありません0x7ffa00576b80!
var auth = new OAuth2Authenticator(
clientId: FacebookClientId,
scope: "email",
authorizeUrl: new Uri(FacebookAuthorizeUrl),
redirectUrl: new Uri(FacebookRedirectUri));
auth.AllowCancel = true;
auth.Completed += async (s, es) =>
{
if (es.IsAuthenticated)
{
var request = new OAuth2Request(
"GET",
new Uri("https://graph.facebook.com/me?fields=email,name,picture,cover,birthday"),
null,
es.Account);
var fbResponse = await request.GetResponseAsync();
if (fbResponse != null)
{
var fbUser = JsonValue.Parse(fbResponse.GetResponseText()); // Getting the error for System.Json double exception issue as well for OAuth v1.5.0.0 only in iOS.
if (fbUser != null)
{
LoginViewModel loginViewModel = new LoginViewModel();
if (!string.IsNullOrEmpty(fbUser["name"]))
{
loginViewModel.ProfileName = fbUser["name"];
loginViewModel.UserName = fbUser["name"];
}
LoginViewModel.SelfLoginViewModel = loginViewModel;
await this.Navigation.PushModalAsync(new MasterHome());
}
else
{
await DisplayAlert("Message", "Check your internet connection!", "OK");
}
}
else
{
await DisplayAlert("Message", "Check your internet connection!", "OK");
}
}
};
auth.Error += (s, ea) =>
{
StringBuilder sb = new StringBuilder();
sb.Append("Error= ").AppendLine($"{ea.Message}");
DisplayAlert("Authentication Error", sb.ToString(),"OK");
};
Xamarin.Auth.Presenters.OAuthLoginPresenter presenter = null;
presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
presenter.Login(auth);
このエラーを解決するためのご意見をお聞かせください。
注:同じコードはAndroid用に完全に動作します。私はこの問題をiOSでのみ直面しています。私はXamarinのAuth v1.5.0.0に
おかげで、
ビジェイを使用しています。
アプリケーション内のページをナビゲーションスタックに積み重ねて問題を解決しました。 PushModalAsync()を使ってXamarin Authと一緒にページに移動するようなことが、この問題を引き起こします。これをPushAsync()に置き換え、メインアプリケーションをNavigationPage()にラップすることで、この問題が解決されます。 – Vijay457