Google OAuth2 経由でユーザーにアカウントを選択させる 質問する

Google OAuth2 経由でユーザーにアカウントを選択させる 質問する

私のアプリケーションには次のワークフローがあります。

  1. ユーザーがカスタムアプリにログインする
  2. ユーザーはボタンをクリックしてYouTubeアカウントをリンクします
  3. アプリケーションは、以下のコードリストを使用してサーバー側リクエストを作成します。
  4. ユーザーはGoogle認証URLにリダイレクトされます

この時点で、次の 2 つのいずれかが起こります。

[私一度もないこの動作を望む]- ユーザーが 1 つの Google アカウント (Gmail、Google Apps for Domains など) にログインしている場合、どのアカウントをリンクするかを選択するようユーザーに求められることはありません。ログインしているアカウントを使用するものと想定して、そのまま処理が続行されます。

[私いつもこの動作を望む]- ユーザーがどの Google アカウントにもログインしていない場合、または複数の Google アカウントにログインしている場合は、続行するアカウントを選択するように求められます。

質問:ユーザーが現在 1 つの 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()
}

ベストアンサー1

デフォルトの Google アカウントを想定するのではなく、ユーザー アカウントを含む同意画面を表示するように Google に指示するために、URL にいくつかのパラメータを追加できると思います。

prompt=select_account+consentこれは、URL に (URL エンコードの一部として「+」が追加されます) を追加することで実行できます。

今まで試していませんでしたが、試してみるといいかもしれません。

おすすめ記事