Можно ли правильно выбрать любую доступную учетную запись Google для использования при авторизации через клиентскую библиотеку JS для Drive?

у вас есть приложение с поддержкой Google Диска, котороес использованием клиентской библиотеки Google Java и аутентификации потока сервера.

Если ты'Если вы не вошли в приложение и не переходите по URL-адресу, И вы вошли в несколько учетных записей Google в этом браузере (возможна только одна личная учетная запись Google, любые дополнительные должны быть учетными записями Google), обратный вызов OAuth предлагает варианты выберите учетную запись Google для использования.

Однако, пока я тестирую переход на использование клиентской библиотеки JavaScript, яЯ не могу активировать экран выбора нескольких учетных записей с помощью gapi.auth.authorize. Можно ли обрабатывать несколько учетных записей с помощью библиотеки JS?

Обновление: я пытался сimmediate параметрfalse, Я могу войти, пока я неизменить учетную запись во всплывающем окне. Если я изменю аккаунт, я получаю:

https://accounts.google.com/o/oauth2/auth?client_id=433863057149.apps.googleusercontent.com&область применения = https: //www.googleapis.com/auth/drive.file+https: //www.googleapis.com/auth/drive.install+https: //www.googleapis.com/auth/userinfo.email+ https://www.googleapis.com/auth/userinfo.profile&немедленная = ложь &redirect_uri = PostMessage &Происхождение = https: //drivedrawio.appspot.com&прокси = oauth2relay593063763 &response_type = маркер &состояние = 701344514 &AuthUser = 1

в новой вкладке и ничего не происходит. Я'весделал видео для демонстрации.

Обновление 2:Этот баг против клиентской библиотеки JS за необходимость двойного выбора нескольких учетных записей.

Ответы на вопрос(4)

http://code.google.com/p/google-api-javascript-client/issues/detail?id=11 мульти-логин неt поддерживается клиентом Javascript

 AlexG10 апр. 2013 г., 23:08
Существует либо обходной путь, либо просто рабочий параметр, указанный вcode.google.com/p/google-api-javascript-client/issues/...
Решение Вопроса

раметра:authuser=0 При этом автоматически выбирается первая учетная запись, в которой вы вошли (authuser=1 выбрал бы второй и т.д ...).

Это'В настоящее время невозможно удалить этот параметр с помощью клиентской библиотеки, потому что клиентская библиотека автоматически устанавливает его на 0 (именно поэтому она утверждает, что не обрабатывает несколько учетных записей), если нет значения, поэтому один из способов - переопределить его на -1 для Например, это покажет выбор нескольких учетных записей. Тогда вы также можете попросить получить доступ кпользователь»профиль или адрес электронной почты в то же время вы запрашиваете доступ к другим API и получаете либо электронное письмо пользователя, либо его идентификатор. Затем при последующем авторизации вы можете указатьuser_id параметр, который будет обходить экран выбора пользователя.

Поэтому на практике сначала авторизуйтесь так:

gapi.auth.authorize({client_id: <your client="" id="">,
                     scope: 'https://www.googleapis.com/auth/drive openid', // That requires access to Google Drive and to the UserInfo API
                     authuser: -1});
</your>

Единственная проблема, описанная выше, заключается в том, что автоматическое обновление клиентской библиотеки не будет работать, поскольку каждый экран аутентификации будет заблокирован на экране выбора нескольких учетных записей.

Хитрость заключается в том, чтобы получить идентификатор пользователя с помощью API-интерфейса UserInfo, сохранить этот идентификатор в файле cookie сеанса и использовать его при последующей аутентификации следующим образом:

gapi.auth.authorize({client_id: <your client="" id="">,
                     scope: 'https://www.googleapis.com/auth/drive openid',
                     user_id: <the user="" id="">,
                     authuser: -1});
</the></your>

Указание пользователяs ID гарантирует, что выбор нескольких учетных записей будет обходным, и позволит автоматически обновлять токен из клиентской библиотеки lib.

Для справки, другие параметры URL, которые влияют на поток пользователя:

user_id: похоже чемauthuser (обходит экран выбора нескольких учетных записей), но вы можете использовать адрес электронной почты (например, [email protected]) или идентификатор пользователя, который вы получаете с нашей конечной точки Open ID Connect / Google + API / UserInfo APIapproval_prompt: по умолчаниюauto, может быть установлен наforce чтобы убедиться, что экран подтверждения / предоставления отображается. Это гарантирует, что экран Ганта не будет обойден при последующей аутентификации (после первого раза).immediateimmediate немного сложно, когда установленоtrue это обойдет экран гранта (вроде какapproval_prompt=auto) если пользователь уже предоставил подтверждение ранее, но если пользователь не предоставил подтверждение ранее, вы будете перенаправлены с ошибкой:error=immediate_failed, Если установленоfalse это победилот добавить особое поведение и, следовательно, отступить на настройке поведения с помощьюapproval_prompt значение.

Замечания:immediate=true а такжеapproval_prompt=force недопустимая комбинация

Я думаю, что клиентская библиотека используетimmediate параметр, так что если он получитerror=immediate_failed он перезапустит поток аутентификации безauthuser парам, но этоТолько предположения :)

 Fuhrmanator13 янв. 2016 г., 19:48
@JaKXz Я думаю этобыло официально зарегистрирован Google, если Nivco 'профиль здесь точный ;-)
 Nicolas Garnier14 нояб. 2012 г., 23:41
Я просто ответил на это, потому что я лучше знаю, как работают наши конечные точки OAuth, чем клиентская библиотека JS: D Я не знал, что она не работает с многопользовательскими учетными записями: /
 chulian31 мая 2013 г., 21:33
Где вы нашли этот параметр? не могу найти его вdevelopers.google.com/+/web/api/javascript
 Adrián E.25 февр. 2016 г., 22:31
authuser: ' ' сделал работу для меня! Мне нужно было выбрать между несколькими учетными записями.
 JaKXz13 мая 2015 г., 23:26
Спасибо! Кто-нибудь знает, почему это не так?официально зарегистрирован Google? Конечно, есть много пользователей с несколькими учетными записями Google, и для приложений, использующих API аутентификации / выбора Google, можно получить правильные файлы ...
 David14 нояб. 2012 г., 18:14
Принимая во внимание, что вы технически ответили на вопросКак получить подсказку, какую учетную запись Google использовать при использовании клиентской библиотеки JS для Drive? ", мой вопрос был на самом деле неправильно назван, извините :).

AuthUser параметр. Установите это в "2" например, и вам будет предложено войти, даже если вы уже прошли аутентификацию.

ежиме, работает ли она должным образом, если вы установитеimmediate параметр в ложь?

 Boris Jockov13 нояб. 2012 г., 19:33
Это приводит к предоставлению доступа к странице, но не к экрану выбора учетной записи, который должен предшествовать ему.

Ваш ответ на вопрос