Ошибка Google 400: недопустимый запрос пользовательские схемы URI не разрешены для типа клиента " Web

когда я вхожу в Gmail в моем приложении iOS, я получаю следующую ошибку (скриншот), и поля входа не отображаются. Мы загружаем экран входа в систему в WKWebView.

  • мы используем пользовательский перенаправление URI, но почему google бросает эту ошибку сейчас. Каковы альтернативы пользовательскому URI?
  • проект Swift 2.3
  • использование OAuthSwift v0.6.0 cocoapod
  • Это началось совсем недавно только на прошлой неделе или около того я поверьте, что-то изменилось с API Google.

Я прочитал, что google осуждает webviews для OAuth и заблокирует запросы 20 апреля 2017 года. Как видно здесь, в блоге разработчиков Google: https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

означает ли это, что мне уже нужно использовать или есть другое жизнеспособное решение? Я думал, что у меня было больше времени, прежде чем обновлять это.

enter image description here

11 ответов


Я предполагаю, что ваш клиент зарегистрирован неправильно в Google Cloud Console. "Веб-клиент" обычно является сервером или приложением Javascript. Приложение iOS должно быть зарегистрировано как клиент iOS.

https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred


Я только что нашел эту проблему.
Пожалуйста, проверьте Google developer console и посмотрите на ключи учетных данных
Ваш идентификатор клиента в Google-info plist должен исходить из приложения iOS, а не из интернета.
И используйте этот идентификатор клиента для revereseClientID и скопируйте его в тип URI


Я только что испытал эту проблему после руководства Google Signin для iOS. Файл, сгенерированный plist, не является хорошим. Вам нужно взглянуть на clientID и reversedClientID и убедиться, что они предназначены для приложения iOS на портале разработчика Google.


Я решил проблемы, создав проект в Пожарная Базы потому что REVERSED_CLIENT_ID генерирует из developers.google.comнеправильно. Попробуйте создать свой проект в FireBase https://console.firebase.google.com


вы должны перекрестно проверить clientId на вашем "Google Dashboard" clientId и clientId на " GoogleProject.Plsit".если оба они разные, скопируйте ClientID из " Google Dashboard "и вставьте его в" GoogleService-Info.Plsit".а также измените свой reverseClientId в "GoogleService-Info.Plsit "в соответствии с недавно вставленным ClientID (вы проверяете шаблон, как reverseClientId создан из идентификатора клиента в" GoogleService-Info.Plsit"). А затем вставьте thid reverseClientId В "тип URL" в вашем проекте установочный.

в случае моего clientId на " GoogleService-Info.Plsit" и панель Google мои были разные. Чеч свой кабинет Google здесь : https://console.developers.google.com/apis/credentials?project=firebase


я столкнулся с этой ошибки после создания GoogleService-Info.plist файл с помощью сайта Google Войти направляет вам!--8-->. Позже я начал использовать Firebase, который, похоже, создает отдельный . После попытки включить новую.plist файл, моя кнопка входа в Google начала давать invalid_request ошибка Custom scheme URIs are not allowed for WEB client type сообщение.

чтобы исправить проблему, я пробовал много вещей, но в конце концов удаление всей моей Firebase проект на своей веб-консоли (а не только в отдельном приложении), воссоздавая новый проект Firebase с нуля и повторно загружая новый .plist файл, решена ошибка.


Он создает два идентификатора клиента. один для интернета и один для приложения iOS. Веб-клиент будет в Google plist по умолчанию. Таким образом, это дает вышеуказанную ошибку. Используйте идентификатор клиента iOS из консоли google или создайте учетные данные для приложения iOS.


Я получал ту же ошибку. Затем я понял, что не предоставил идентификатор пакета приложений для доступа к службе входа в Google в моем приложении. Вы делаете это со страницы со ссылкой:

https://developers.google.com/mobile/add?platform=ios&cntapi=signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fios%2Fsign-in%3Fconfigured%3Dtrue&cntlbl=Continue%20Adding%20Sign-In

1.Войдите в систему с помощью разработчика Google счет.

2.Создайте имя приложения и скопируйте идентификатор пакета приложений из проекта: Проект и целевой список> общие> идентификатор пакета.

3.Выберите свою страну

4.Включить Google-Вход.

затем выполните необходимые шаги для интеграции входа Google в приложение iOS.


Я столкнулся с той же проблемой. Я следовал всем инструкциям по интеграции моего приложения несколько раз и играл с кодом, чтобы увидеть, есть ли какая-либо скрытая проблема в коде. Я загрузил и настроил пример приложения из google в github https://github.com/googlesamples/google-services и перейти к той же проблеме, так что это был не код.

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

единственное, что удалось исправить эту проблему, это использовать Firebase вместо этого. Я создал приложение в консоли firebase, загрузил новый plist, и это сработало.

все еще не уверен, почему это не сработало для меня в первую очередь, это не кажется общей проблемой, но я надеюсь, что это поможет кому-то. ура,


пожалуйста, проверьте console.developers.google.com/apis/credentials для вашего проекта и посмотрите, есть ли уже client_id в разделе идентификаторы клиентов OAuth 2.0 , если да, то скопируйте этот идентификатор клиента и замените его на GoogleService-Info.plist файл CLIENT_ID и соответственно изменить REVERSED_CLIENT_ID (в обратном порядке) теперь очистить и построить приложение и проверить его будет работать


для моего опыта я следовал руководству Google SignIn iOS Swift и загрузил веб-файл OAuth JSON. Они буквально предоставляют вам неправильный файл Plist для установки iOS.

на всякий случай, если кто-то еще столкнется с этой проблемой, вот шаги, которые я выполнил:

  1. перейдите в консоль разработчиков Google.
  2. перейдите в раздел Учетные данные.
  3. обратите внимание, что в разделе "идентификаторы клиента OAuth 2.0" есть два элемента. (Если вы ранее попытка настроить проект Google SignIn для iOS.
  4. нажмите на название "клиент iOS для".
  5. нажмите "Загрузить файл PLIST".
  6. удалите файл Google web Plist из вашего проекта.
  7. падение в новом файле Plist на основе iOS.
  8. скопируйте новый REVERSED_CLIENT_ID в Типы URL информационной страницы вашего проекта. (Это подробно описано в руководстве Google).
  9. попытка запустить приложение снова.

примечание: Я получил Google Sign in API для работы с Swift v3 и XCode v8.