Подтвердить что ты не робот

HWIOAuthBundle Вход в систему Google device_id и имя_устройства для webapp

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

Проблема заключается в следующем: Я могу войти с помощью google api на localhost, и все работает нормально.

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

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 не упоминаются эти два параметра. Я попытался вручную отправить запрос с идентификатором device_id, который является UUID и имя_устройства, установленным в "notes". Ответ, который я получаю на этот раз:

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>

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

4b9b3361

Ответ 1

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

\Windows\System32\drivers\etc

192.168.1.2   fakedomain.com

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

Ответ 2

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