В моем приложении есть следующий рабочий процесс:
- пользователь регистрируется в моем пользовательском приложении
- Пользователь нажимает кнопку, чтобы связать свою учетную запись YouTube.
- приложение делает запрос на стороне сервера, используя приведенный ниже код
- пользователь перенаправляется на URL-адрес google auth url
В этот момент происходит одна из двух вещей:
[I никогда не хочет этого поведения] - Если пользователь зарегистрирован в одной учетной записи Google (то есть gmail, Google Apps для доменов и т.д.), Пользователю никогда не предлагается выбрать, какую учетную запись нужно связать. Он просто предполагает, что они хотят использовать тот, с которым они вошли, и продолжают веселиться.
[I всегда хочет этого поведения] - Если пользователь либо не вошел в учетные записи Google, либо они вошли в более чем одну учетную запись Google, тогда им предлагается выбрать, с какой учетной записи они будут работать.
Вопрос: Есть ли способ заставить пользователя выбрать учетную запись, даже если пользователь в настоящее время зарегистрирован в одной учетной записи Google?
код:
private def getFlow() = {
if (flow == null) {
logger.info("Using OAuth client secrets file: " + GoogleOAuthService.CLIENT_SECRETS_JSON)
clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(),
new InputStreamReader(getClass.getResourceAsStream(GoogleOAuthService.CLIENT_SECRETS_JSON)));
redirectUri = clientSecrets.getDetails().getRedirectUris().get(0)
flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, JacksonFactory.getDefaultInstance(), clientSecrets, SCOPES).setDataStoreFactory(
dataStoreFactory).setAccessType("offline").setApprovalPrompt("force").build()
}
flow
}
def newAuthorizationUrl(userId: String) = {
val urlRequest = getFlow().newAuthorizationUrl()
urlRequest.setAccessType("offline")
.setRedirectUri(redirectUri).setState(userId).build()
}