Xamarin.Auth Google Presenter не закрывается в приложении Android Xamarin.Forms
Я использую Xamarin.Form, чтобы написать приложение для Android. Я успешно внедрил OAuth, и я могу войти в систему и получить информацию о пользователе с помощью OAuth2Authenticator.
Когда пользователь нажимает на кнопку "Зарегистрироваться / Войти", я показываю OAuthLoginPresenter следующим образом:
var oAuthLoginPresenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
oAuthLoginPresenter.Login(App.OAuth2Authenticator);
Это прекрасно работает, и пользователь видит страницу входа.
Когда пользователь нажимает кнопку "Разрешить", завершенное событие в экземпляре OAuth2Authenticator срабатывает, как и ожидалось, и пользователь снова смотрит на приложение.
Однако вот где моя проблема - я получаю уведомление:
Если экран входа в CustomTabs не закрывается, автоматически закройте вкладки CustomTabs, вернувшись обратно в приложение.
Дело в том, что я вернулся в приложение. Если я посмотрю на все свои открытые приложения, то увижу, что экран входа все еще работает на заднем плане, так что докладчик не закрылся.
В моем перехвате Activity, который получает перенаправление, выглядит так:
[Activity(Label = "GoogleAuthInterceptor")]
[IntentFilter
(
actions: new[] { Intent.ActionView },
Categories = new[]
{
Intent.CategoryDefault,
Intent.CategoryBrowsable
},
DataSchemes = new[]
{
// First part of the redirect url (Package name)
"com.myapp.platform"
},
DataPaths = new[]
{
// Second part of the redirect url (Path)
"/oauth2redirect"
}
)]
public class GoogleAuthInterceptor: Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
Android.Net.Uri uri_android = Intent.Data;
// Convert Android Url to C#/netxf/BCL System.Uri
Uri uri_netfx = new Uri(uri_android.ToString());
// Send the URI to the Authenticator for continuation
App.OAuth2Authenticator?.OnPageLoading(uri_netfx);
Finish();
}
}
Я пропускаю шаг, чтобы закрыть этого докладчика? Любые другие идеи, пожалуйста?
ОБНОВИТЬ:
Теперь я обнаружил, что использование Chrome в качестве браузера по умолчанию работает нормально, а ведущий закрыт. Но если я использую браузер Samsung в качестве браузера по умолчанию - он не закрывается.
Поэтому мне нужен способ закрыть его вручную.
1 ответ
Просто установите свойство в null при инициализации Xamarin.Auth в вашей основной деятельности:
//don't show warning message when closing account selection page
CustomTabsConfiguration.CustomTabsClosingMessage = null;