Xamarin.Auth - UWP - URL-адрес перенаправления, перехваченный Windows - PullRequest
0 голосов
/ 30 ноября 2018

Я использую пакет Xamarin.Auth для аутентификации пользователя по службе аутентификации в моем приложении UWP.

Аутентификатор создается следующим образом:

this.Authenticator = new OAuth2Authenticator(
    CLIENT_ID,
    CLIENT_SECRET,
    "openid profile",
    new Uri("https://<authentication-example-server>/authorize"),
    new Uri("my-app://oauth2redirect"),
    new Uri("https://<authentication-example-server>/access_token"),
    GetUsernameAsync,
    isUsingNativeUI: false);
this.Authenticator.Completed += this.OnAuthenticationCompleted;

Позже я запускаю процесс аутентификации:

var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
presenter.Login(this.Authenticator);

Пока все работает, как ожидалось, и аутентификация работает нормально.Тем не менее, я получаю вопрос о перенаправлении.Хотя перенаправление с пользовательским URL-адресом вызывает само приложение и вызывает метод

protected override void OnActivated(IActivatedEventArgs args)

, как и ожидалось, Windows всегда вызывает дополнительное диалоговое окно: Did you meant to switch apps?

Как можно избежать такого перехвата процесса аутентификации без изменения реестра или каких-либо общесистемных настроек?На самом деле, приложение только вызывает себя, и поэтому я не могу понять, почему сообщение вызвано.Нужно ли использовать другой подход перенаправления?

Я также пытался использовать isUsingNativeUI: true, и ничего не изменилось.

1 Ответ

0 голосов
/ 03 декабря 2018

Похоже, что параметр перенаправления (my-app://oauth2redirect) был расценен как запуск приложения.Вы можете изменить его на другой, например https://auth0.com/

this.Authenticator = new OAuth2Authenticator(
    CLIENT_ID,
    CLIENT_SECRET,
    "openid profile",
    new Uri("https://<authentication-example-server>/authorize"),
    new Uri("https://auth0.com/"),
    new Uri("https://<authentication-example-server>/access_token"),
    GetUsernameAsync,
    isUsingNativeUI: false);
...