Заставить Google показывать экран выбора аккаунта и разрешения

Я могу использовать как prompt=consent, так и prompt=select_account отдельно, но Google, похоже, не позволяет мне их комбинировать. Я попробовал prompt=consent+select_account, как это было предложено в ответе Заставить команду выбора учетной записи google, но с ошибкой не получается: "Неверное приглашение: согласие + select_account".

Doc (https://developers.google.com/accounts/docs/OAuth2Login) говорит "Список с разделителями пробела", поэтому я попробовал consent select_account, но это не удалось: "Запрошенный URL-адрес не найден на этом сервере."

Я также пробовал комбинировать prompt=select_account и approval_prompt=force, но Google тоже не нравится.

Кому-то еще повезло с объединением экрана согласия и выбора аккаунта?

Update:

Это мой метод JavaScript, создающий URL-адрес для получения контактов из gmail

$scope.importGmailContacts = function() {
    provider = 'gmail';
    $scope.importing_from_gmail = true;
    window.open(protocol + "://" + host + ":" + port + "/contacts/gmail", "_blank",
     "toolbar=yes, scrollbars=yes, resizable=yes, top=0, left=0, width=600, height=600, prompt='select_account+consent', approval_prompt=force");
}

Я попытался установить prompt и approval_prompt как коллективно, так и индивидуально, но, похоже, не работает. Обратитесь к этому вопросу.

Ответ 1

Я просто попробовал это, и он работал с разделителем по размеру:

options [: prompt] = 'select_account agree'

Ответ 2

Вам нужно добавить: access_type=online&prompt=select_account+consent:

private static final String AUTHORIZE_URL 
    = "https://accounts.google.com/o/oauth2/auth?"
      + "response_type=code&access_type=online&prompt=select_account+consent"
      + "&client_id=xxx&redirect_uri=xxx";

private static final String SCOPED_AUTHORIZE_URL = AUTHORIZE_URL + "&scope=xxx";

..

Ответ 3

https://accounts.google.com/o/oauth2/auth?client_id=XXXX&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code&prompt=select_account+consent&approval_prompt=force

Результаты ошибки

  1. Это ошибка.

Ошибка: invalid_request

Параметры конфликта: confirm_prompt и prompt

Параметры запроса и утверждения не могут использоваться вместе.

prompt Необязательно.

Список запросов с указанием пробелов, учитывающий регистр, для представления пользователю. Если вы не укажете этот параметр, пользователю будет предложено только в первый раз, когда ваш запрос приложения получит доступ. Возможные значения:
none Не показывать экраны проверки подлинности или согласия. Нельзя указывать другие значения.
согласие. Подтвердите согласие пользователя.
select_account. Попросите пользователя выбрать учетную запись.

Если память обслуживает assert_prompt, это более старый способ сделать это, а google добавлен в некоторое время в 2012 году. Я не могу найти какую-либо документацию на author_prompt больше, но если память обслуживается, то она была такой же, как и приглашение = разрешить, просто запрашивая доступ снова.