Forçando um usuário a escolher uma conta pelo Google OAuth2
Eu tenho o seguinte fluxo de trabalho no meu aplicativo:
usuário faz login no meu aplicativo personalizadoo usuário clica em um botão para vincular sua conta do YouTubeaplicativo faz uma solicitação do lado do servidor usando a lista de códigos abaixoo usuário é redirecionado para o URL de autenticação do GoogleNeste ponto, uma das duas coisas acontece:
[EUNunca quer esse comportamento] - Se o usuário estiver conectado a exatamente uma conta do Google (por exemplo, gmail, Google Apps for Domains, etc.), nunca será solicitado que o usuário escolha qual conta vincular. Apenas assume que eles querem usar aquele em que está logado e segue seu caminho alegre.
[EUsempre quer esse comportamento] - Se o usuário não estiver conectado a nenhuma conta do Google ou se estiver conectado a mais de uma conta do Google, será solicitado que você escolha com qual conta deseja continuar.
Pergunta, questão: Existe uma maneira de forçar o usuário a escolher uma conta, mesmo se o usuário estiver atualmente conectado a uma única conta do Google?
Código:
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()
}