Xamarin.Auth OAuth2Authenticator продолжает просить пользователя предоставить разрешение - PullRequest
0 голосов
/ 05 февраля 2019

Я реализовал аутентификацию OAuth 2 с помощью Xamarin.Auth.

Authenticator = new OAuth2Authenticator(
clientId: OAuthConstants.CLIENT_ID,
clientSecret: null,
scope: OAuthConstants.SCOPE,
authorizeUrl: new Uri(OAuthConstants.AUTHORIZE_URL),
accessTokenUrl: new Uri(OAuthConstants.ACCESS_TOKEN_URL),
redirectUrl: new Uri(OAuthConstants.REDIRECT_URL),
getUsernameAsync: null,
isUsingNativeUI: true);

Пользователь может зарегистрироваться с помощью OAuth или использовать локальную учетную запись и связать ее с учетной записью Google.Оба эти сценария работают нормально.

При связывании учетной записи или регистрации пользователю предлагается предоставить разрешения области (электронная почта профиля).Затем я возвращаю токен доступа и использую Хранилище Аккаунтов для хранения аккаунта.

Поскольку теперь это связано с Google, я храню идентификатор пользователя Google и токен обновления в БД.

Идея состоит в том, что если приложение удалено, а затем пользователь переустанавливает его, я хочу, чтобы они могли снова войти в систему с помощью Google oAuth.

Это работает - поскольку я могу найтипользователь, использующий идентификатор пользователя Google, но даже думал, что идентификатор приложения не изменился при использовании OAuth2Authenticator для запроса маркера доступа. Он продолжает просить пользователя предоставить разрешения - , даже если они уже предоставили разрешения для приложения.

Я показываю докладчика следующим образом:

var presenter = new Xamarin.Auth.Presenters.OAuthLoginPresenter();
CustomTabsConfiguration.CustomTabsClosingMessage = null;
presenter.Login(Authenticator);

Я бы подумал, что, поскольку пользователь разрешил доступ к приложению, ему не будет предложено снова предоставить разрешение.

Есть ли другой способ побудить их войти в систему, а не просто каждый раз запрашивать разрешения?

Спасибо,

...