Ошибка: invalid_request device_id и имя_устройства необходимы для частного IP-адреса
Я делал свое развитие с помощью API Google Диска, используя [localhost: 8080]. Внезапно я почувствовал, что тестировал его в своей изолированной программной среде локального развертывания, и он имеет IP-адрес как [192.168.1.1:8080]. И в соответствии с этим я изменил учетные данные в URL-адресе обратного вызова клиента консоли разработчика. Я использую OAuth2WebServerFlow, чтобы получить токен обновления, используя согласие пользователя. Затем в будущем я использую токен обновления и OAuth2WebServerFlow для аутентификации пользователя. Но я был удивлен - я получил ошибку:
- Это ошибка.
Ошибка: invalid_request
device_id и device_name необходимы для частного IP:
Я не знаю, что происходит или как я могу это исправить. Что происходит, я не понимаю
Ответы
Ответ 1
Альтернативой редактированию файла hosts
является использование службы "Magic DNS" http://xip.io/ или http://nip.io/ (см. править)
xip.io - это магическое доменное имя, которое предоставляет подстановочный DNS для любого IP-адреса. Укажите IP-адрес вашей локальной сети 10.0.0.1. Используя xip.io,
10.0.0.1.xip.io resolves to 10.0.0.1
www.10.0.0.1.xip.io resolves to 10.0.0.1
mysite.10.0.0.1.xip.io resolves to 10.0.0.1
foo.bar.10.0.0.1.xip.io resolves to 10.0.0.1
С помощью этой службы вы можете указать общедоступный домен, который разрешает приватный адрес.
В Консоли, если ваш URI перенаправления был (как бы вы ни пожелали, так или иначе):
http://192.168.1.1:8080/auth/google_oath2/callback
Замените его:
http://192.168.1.1.xip.io:8080/auth/google_oath2/callback
"Переадресация URI", похоже, не принимает подстановочные знаки, поэтому весь закрытый ip-xip.io должен быть указан в консоли.
У меня нет связи с xip.io; Я просто довольный пользователь.
2016 Edit: Я слышал сообщения о нестабильности с DNS-серверами xip.io. Существует служба copy-cat nip.io, которая ведет себя точно так же, как и xip.io, но в июле 2016 года nip.io имел 100% -ный коэффициент ответа, а xip.io не сделал.
Ответ 2
При выполнении Oauth-вызовов Google не будет принимать локальный (закрытый) IP-адрес. Мое обходное решение состояло в том, чтобы добавить запись в мой файл хостов Windows для локального IP:
\Windows\System32\drivers\etc
192.168.1.2 fakedomain.com
затем зарегистрируйте fakedomain.com
с помощью Google в своей консоли разработчика. Это выглядит как "реальный" домен, но все равно будет разрешен в вашем браузере локальному IP. Я уверен, что аналогичный подход на Mac или Linux также будет работать.
Ответ 3
Я получил ту же ошибку, пока не изменил ее с IP-адреса на доменное имя (192.168.1.113 на localhost в моем случае), поэтому похоже, что Google не принимает голые IP-адреса.
Используйте доменное имя для вашей песочницы или настройте локальный сервер домена, если у вас его нет.
Ответ 4
Изменить: актуально только при локальном развитии.
Хорошо, у меня такая же проблема на моем Mac. После устранения этих проблем проблема
-
Перейдите в консоль разработки Google https://console.developers.google.com/project, выберите учетные данные и измените IP обратного вызова на домен, например http://myflask.com:5000/oauth2callback.
В моем случае я использую приложение Flask, поэтому необходим порт 5000.
-
Затем добавьте в свой приватный файл /etc/hosts новую запись, соответствующую указанному имени хоста, вашему ip, например:
-
(пример IP)
172.1.1.1 myflask.com
- Дайте Google минуту для обновления ваших учетных данных и посетите ваш сайт на myflask.com:5000
Ответ 5
Стоит отметить, что на Mac вы можете сделать то же самое, отредактировав его как root:
/private/etc/hosts
Добавьте аналогичную строку, как указано выше
192.168.60.10 fakedomain.com
Ответ 6
Измените хосты файлов в \Windows\System32\drivers\etc\hosts
добавить "192.168.1.2 fakedomain.com" в файл hosts
перезагрузите окна
Обновить консоль Google 192.168.1.2 для fakedomain.com