У нас есть приложение, которое успешно выполняет вход в Google с разных клиентов: веб, iOS приложение, Android приложение. Сейчас мы пытаемся интегрировать Google Sign-in в Ma c Catalyst версии нашего iOS приложения.
Мы используем гибридный поток, мы генерируем код авторизации на клиент и обменять его на сервере для получения доступа и обновления sh токена.
Я нашел эту библиотеку https://github.com/elsesiy/GAppAuth, и я использую те же учетные данные, которые использовались для iOS app.
Перенаправление в приложение после входа в систему по пользовательской схеме работает нормально, и я могу получить код авторизации.
Но когда я делюсь код авторизации с моего сервера, я получаю сообщение об ошибке на запрос об обмене кодом аутентификации для получения access_token и refresh_token:
POST https://accounts.google.com/o/oauth2/token
Content-Type: application/x-www-form-urlencoded
Параметры:
- код (отправлено клиентом)
- client_id (идентификатор клиента сервера)
- client_secret (секрет сервера)
- grant_type = "authorization_code"
redirect_uri не добавляется для запроса собственного клиента. * 1 037 *
Ответ:
400 {'error': 'invalid_grant', 'error_description': 'Bad Request'}
Обратите внимание, что точно такой же поток работает на iOS. Я также проверил другой тип учетных данных (собственные клиенты, тип: Другое)
Есть идеи, что не так и как это исправить?
I подозреваю, что библиотеки GA для входа в систему делают что-то, что не реализовано в GAppAuth (см. https://github.com/openid/AppAuth-Android/issues/293).