Ошибка 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
означает ли это, что мне уже нужно использовать или есть другое жизнеспособное решение? Я думал, что у меня было больше времени, прежде чем обновлять это.
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 в моем приложении. Вы делаете это со страницы со ссылкой:
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.
на всякий случай, если кто-то еще столкнется с этой проблемой, вот шаги, которые я выполнил:
- перейдите в консоль разработчиков Google.
- перейдите в раздел Учетные данные.
- обратите внимание, что в разделе "идентификаторы клиента OAuth 2.0" есть два элемента. (Если вы ранее попытка настроить проект Google SignIn для iOS.
- нажмите на название "клиент iOS для".
- нажмите "Загрузить файл PLIST".
- удалите файл Google web Plist из вашего проекта.
- падение в новом файле Plist на основе iOS.
- скопируйте новый REVERSED_CLIENT_ID в Типы URL информационной страницы вашего проекта. (Это подробно описано в руководстве Google).
- попытка запустить приложение снова.
примечание: Я получил Google Sign in API для работы с Swift v3 и XCode v8.