Совместное использование кода проверки google oauth между клиентом Android и сервером rails

Я пытаюсь настроить вход через Google+ в нашем мобильном приложении.

Итак, у нас есть клиент для Android, который получает код подтверждения для oauth google api.

Затем он отправляет код Verification_code обратно в rails, а rails отвечает за получение пары токенов доступа и токенов обновления, а затем связывается с API.

У меня проблема с проверкой проверочного_кода.

Сначала он вернется

{
  "error" : "redirect_uri_mismatch"
}

Итак, прочитав немного, кажется, что мы не должны указывать redirect_uri для токенов Android, но когда я пытаюсь установить redirect_uri на nil, это не удается с

{
  "error" : "invalid_request",
  "error_description" : "Missing parameter: redirect_uri"
}

Я также попытался установить пустую строку вместо nil и снова получил uri_mismatch.

Я попытался выполнить обычную аутентификацию с кодом подтверждения, полученным с помощью игровой площадки oauth, и оттуда все работает.

Немного кода

@authorization = CLIENT_SECRETS.to_authorization
@authorization.clear_credentials!
@authorization.grant_type = 'authorization_code'
@authorization.code = authorization_code
@authorization.redirect_uri = nil
@authorization.fetch_access_token!

Любая помощь будет оценена по достоинству!


person Paté    schedule 19.02.2014    source источник


Ответы (2)


Отправляемые вами URI перенаправления должны совпадать с тем, который вы настроили в консоли Google API.

API и авторизация -> учетные данные

person DaImTo    schedule 21.02.2014

Хорошо, так что на самом деле это было своего рода скрытым, но я нашел его.

Поэтому вам нужно установить uri перенаправления на «внеполосный» uri, настроенный в учетных данных.

urn:ietf:wg:oauth:2.0:oob

Клиент на самом деле не устанавливает это значение, но я думаю, что Google по умолчанию использует его.

Текущий гем-печать не позволяет установить для redirect_uri это значение, поэтому я добавил PR в основной репозиторий. Тем временем я использую свой форк, и он отлично работает.

https://github.com/google/signet/pull/35

person Paté    schedule 22.02.2014