Мое приложение xamarin не будет перенаправлено после входа в Facebook
Я новичок в формах xamarin, я сделал много поисков в SO и Google и не могу решить эту проблему, которая застряла у меня на несколько дней.
Я хочу, чтобы пользователи моего мобильного приложения могли входить через Facebook. Я следовал примеру кода на https://github.com/xamarin/Xamarin.Auth/. Я также настроил свое приложение developers.facebook.com
Я отлаживаю с помощью эмулятора Android через VS2017 с Xamarin. Я пишу приложение для платформы X, поэтому у меня есть проект PCL, Android и iOS. Когда я нажимаю кнопку входа в Facebook, веб-интерфейс Facebook отображается, как и ожидалось, при входе в систему управление не возвращается в приложение. Он просто находится на ленте новостей Facebook для моего профиля на Facebook во встроенном браузере. Событие OAuth2Authenticator.Completed никогда не запускается. Если я нажимаю кнопку "Назад" на моем устройстве Android, то он срабатывает, но e.IsAuthenticated имеет значение false.
Это код для запуска входа в Facebook
var auth = new OAuth2Authenticator(FaceBookAppId, "",
new Uri("https://m.facebook.com/dialog/oauth/"),
new
Uri("https://www.facebook.com/connect/login_success.html"));
auth.Completed += Auth_Completed;
auth.Error += Auth_Error;
var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
presenter.Login(auth);
У меня есть точка останова в обработчике событий, но она никогда не срабатывает.
async void Auth_Completed(object sender, AuthenticatorCompletedEventArgs e)
{
if(e.IsAuthenticated)
{
//do some magic
}
}
Не уверен, что я сделал неправильно. Пожалуйста помоги.
1 ответ
После нескольких дней попыток решить эту проблему стало ясно, что пакет Xamarin.Auth устарел.
Я обнаружил, что при развертывании релиза на реальном устройстве вход в систему работал нормально, но он не работал на эмуляторе.
Я решил воспользоваться "ручным" веб-подходом, который подробно описан в документации для разработчиков на Facebook здесь https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow
гораздо более простое решение.