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>
Теперь, что я делаю неправильно?
Ответы
Ответ 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. Возможно, вам понадобится один из других потоков, поскольку я не вижу здесь достаточно подробностей, чтобы судить, но все они можно найти по ссылкам.