Ошибка Google 400: неверный запрос Пользовательские схемы URI не разрешены для типа клиента "Web"
Когда я вхожу в Gmail в моем приложении iOS, я получаю следующую ошибку (скриншот), и поля входа не отображаются. Мы загружаем экран входа в WKWebView.
- Мы используем настраиваемый URI-переадресацию, но почему Google теперь бросает эту ошибку. Каковы альтернативы пользовательскому URI?
- Проект Swift 2.3
- Использование OAuthSwift v0.6.0 cocoapod
- Это началось совсем недавно только на прошлой неделе или около того, я считаю, что что-то изменилось с помощью API Google.
Я прочитал, что google - это обесценение веб-просмотров для OAuth и блокирует запросы 20 апреля 2017 года. Как видно из этого в блоге разработчиков Google:
https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html
Означает ли это, что мне уже нужно использовать или есть другое жизнеспособное решение? Я думал, что у меня было больше времени, прежде чем нужно было это обновить.
![введите описание изображения здесь]()
Ответы
Ответ 1
Я предполагаю, что ваш клиент зарегистрирован неправильно в Google Cloud Console. Клиент "WEB" обычно является сервером или Javascript-приложением. Приложение iOS должно быть зарегистрировано как клиент iOS.
https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred
Ответ 2
Я тоже нашел эту проблему.
Проверьте консоль разработчика Google и посмотрите ключи учетных данных
Идентификатор вашего клиента в google-info plist должен поступать из приложения iOS, а не из Интернета.
И используйте этот идентификатор клиента для revereseClientID и скопируйте его в тип URI
Ответ 3
Я просто испытал эту проблему, следуя руководству Google Signin for iOS. Файл, созданный с помощью plist, не является хорошим. Вам нужно взглянуть на clientID и reverseedClientID и быть уверенным, что они являются приложениями для iOS на вашем портале разработчика Google.
Ответ 4
Я решил проблемы, создав проект в Fire Base. Поскольку REVERSED_CLIENT_ID генерируется с developers.google.com Неверно.
Попробуйте создать свой проект в FireBase
https://console.firebase.google.com
Ответ 5
вы должны перекрестно проверить clientId на вашем "Google Dashboard" clientId и clientId в "GoogleProject.Plsit". Если оба варианта отличаются, скопируйте ClientID из "Google Dashboard" и вставьте его в "GoogleService-Info.Plsit". измените ваш reverseClientId в "GoogleService-Info.Plsit" в соответствии с недавно вставленным ClientID (вы проверяете шаблон, как reverseClientId создан из идентификатора клиента в "GoogleService-Info.Plsit" ). И затем вставьте в свой проект значение tht reverseClientId в "Тип URL".
В случае, если my clientId на "GoogleService-Info.Plsit", а моя "Панель управления Google" отличается.
chech your google dashboard здесь: https://console.developers.google.com/apis/credentials?project=firebase
Ответ 6
Я столкнулся с этой ошибкой после создания файла GoogleService-Info.plist
с помощью сайта Вход в Google перенаправляет вас. Позднее я начал использовать Firebase, который, похоже, создает отдельный файл .plist
. После попытки включить новый файл .plist
Firebase, моя кнопка входа в Google начала приводить к ошибке invalid_request
с сообщением Custom scheme URIs are not allowed for WEB client type
.
Чтобы исправить проблему, я пробовал много вещей, но в конце концов удалил проект MY ENTIRE Firebase на своей веб-консоли (а не только в отдельном приложении), воссоздав новый проект Firebase с нуля, и повторная загрузка нового файла .plist
, устранена ошибка.
Ответ 7
Он создает два идентификатора клиента. один для Интернета и один для приложения iOS. По умолчанию веб-клиент будет находиться в google plist. Таким образом, это дает вышеприведенную ошибку. Используйте идентификатор клиента iOS с консоли Google или создайте учетные данные для приложения iOS.
Ответ 8
Я получал ту же ошибку. Затем я понял, что я не предоставил идентификатор Bundle приложения для доступа к службе входа в 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.Создайте имя приложения и скопируйте идентификатор приложения из своего проекта:
Project и Target List > General > Bundle Identifier.
3.Выберите свою страну
4.Enable Google-Вход.
Затем выполните необходимые шаги для интеграции входа Google в приложение iOS.
Ответ 9
Я столкнулся с той же проблемой. Я выполнил все инструкции по интеграции своего приложения несколько раз и играл с кодом, чтобы узнать, есть ли какая-либо скрытая проблема в коде.
Я загрузил и настроил пример приложения из Google в github https://github.com/googlesamples/google-services и пошел той же проблемой, поэтому это был не код.
Казалось, что есть что-то в моей конфигурации консоли, поэтому я переключался между различными консольными приложениями Google и играл с изменением идентификаторов пакетов.
Единственное, что удалось исправить, это использовать Firebase. Я создал приложение в консоли firebase, загрузил новый plist, и он сработал.
Все еще не уверен, почему это не помогло мне в первую очередь, это, похоже, не является общей проблемой, но я надеюсь, что это поможет кому-то.
приветствия,
Ответ 10
Просьба проверить console.developers.google.com/apis/credentials для вашего проекта и посмотреть, есть ли уже клиент_ид в разделе идентификаторов клиентов OAuth 2.0, если это так, то скопируйте этот идентификатор клиента и замените его на GoogleService-Info. plist file CLIENT_ID и соответственно измените REVERSED_CLIENT_ID (в обратном порядке), теперь очистите и создайте приложение и протестируйте его, чтобы он работал.
Ответ 11
По моему опыту, я выполнил руководство Google SignIn iOS Swift и загрузил файл Web OAuth JSON. Они буквально предоставляют вам неправильный файл Plist для установки iOS.
На всякий случай кто-то еще сталкивается с этой проблемой, вот шаги, которые я выполнил:
- Перейдите в консоль Google Developers.
- Перейдите в раздел "Учетные данные".
- Обратите внимание, что в разделе "Идентификаторы клиентов OAuth 2.0" есть два элемента. (Если вы ранее пытались настроить проект iOS Google SignIn.
- Нажмите на имя "клиент iOS для".
- Нажмите "Загрузить файл PLIST".
- Удалите файл Plist Google в вашем проекте.
- Поместите новый файл Plist на iOS.
- Скопируйте новый REVERSED_CLIENT_ID в свой URL-адрес Типы страницы Info вашего проекта. (Это подробно описано в руководстве Google).
- Попробуйте снова запустить приложение.
Примечание. Я получил API входа в Google для работы с Swift v3 и XCode v8.