HWIOAuthBundle Google login device_id и device_name для веб-приложения

Я работаю над приложением Symfony2. Я использую FOSUserBundle для обработки аутентификации и недавно интегрировал его с FOSUserBundle с помощью этого руководства: https://gist.github.com/danvbe/4476697 .

Проблема в том, что я могу войти в систему с помощью Google API на локальном хосте, и все работает нормально.

Однако, когда я пытаюсь войти на реальный сервер, я получаю:

Error: invalid_request

device_id and device_name are required for private IP: http://<server_ip>/login/check-google

Детали запроса:

response_type=code
scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
redirect_uri=http://<server_ip>/login/check-google
client_id=<my_id>

В документах Google эти два параметра не упоминаются. Я попытался вручную отправить запрос с идентификатором устройства, являющимся UUID, а имя_устройства установлено на «заметки». На этот раз я получаю ответ:

Error: invalid_request

Device info can be set only for native apps.

Детали запроса:

cookie_policy_enforce=false
response_type=code
device_name=notes
scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile
redirect_uri=http://<server_ip>/login/check-google
device_id=4b3403665fea6
client_id=<my_id>

Теперь, что я делаю неправильно?


person user3460035    schedule 25.03.2014    source источник
comment
Помимо localhost, включает ли ваш clientID ваш сервер (по IP-адресу)? cloud.google.com/console   -  person Les Vogel - Google DevRel    schedule 09.07.2014


Ответы (2)


Google не будет принимать локальный (частный) IP-адрес при вызовах Oauth или API. Мой обходной путь состоял в том, чтобы добавить запись в мой файл хостов Windows для локального IP-адреса:

\Windows\System32\drivers\etc

192.168.1.2   fakedomain.com

затем зарегистрируйте его в Google в своей консоли разработчика. Для них это выглядит как «настоящий» домен, но он все равно будет разрешаться в вашем браузере или в коде локального IP-адреса. Я уверен, что аналогичный подход на Mac или Linux также сработает.

person Josh Diehl    schedule 24.09.2014
comment
Не повлияет ли это на безопасность? Зачем Google вообще нужен домен? - person Lennart Rolland; 08.01.2019
comment
Судя по всему, они уже исправили это. - person Bugs Buggy; 21.01.2021

Это действительно похоже на то, что вы используете неправильный вкус oauth. device_id используется с Устройствами. Я действительно ожидаю, что вы будете использовать поток WebServer. Вам может понадобиться один из других потоков, так как я не вижу здесь достаточно подробностей, чтобы судить, но их все можно найти по ссылкам.

person Les Vogel - Google DevRel    schedule 09.07.2014
comment
Кстати, клиентскую библиотеку для PHP можно найти на code.google. com/p/google-api-php-client/wiki/OAuth2 - person Les Vogel - Google DevRel; 10.07.2014