Экран согласия Google Oauth не отображается - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь следовать руководству Google Oauth, чтобы дать моему приложению Rails разрешение на редактирование календарей пользователей. Может быть, я неправильно понимаю, но руководство , похоже, говорит, что все, что вам нужно сделать, это отправить определенный запрос в API Google, и это предложит пользователю открыть экран согласия. Однако я отправляю запрос без ошибок, но ничего не происходит.

Мое приложение проверено, и URL-адрес, на котором я пытаюсь это сделать, был добавлен в мои учетные данные Oauth. Теоретически в данном случае это не должно иметь значения, но у меня также установлены гемы google-api-client, omniauth и omniauth-google-oauth2. URL-адрес HTTPS с сертификатом SSL.

Что я делаю не так?

# this is the controller action for my path, so the API is pinged when the page is loaded
def path

    url = "https://accounts.google.com/o/oauth2/v2/auth?
      scope=email%20profile%20calendar.events&
      response_type=code&
      redirect_uri=<URL>&
      client_id=<CLIENT_ID>"

    require 'open-uri'
    require 'uri'
    require 'net/http'
    require 'json'
    require 'net/https'
    uri = URI(url)
    response = Net::HTTP.get(uri)


end

1 Ответ

1 голос
/ 16 января 2020

Руководство немного сбивает с толку. Они говорят «отправить запрос на URL https://accounts.google.com/o/oauth2/v2/auth», но на самом деле означают «открыть этот URL в браузере». Я думаю, что это точка, которую вы неправильно поняли.

Итак, создайте этот файл html:

<a href="https://accounts.google.com/o/oauth2/v2/auth?scope=email%20profile%20calendar.events&response_type=code&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID">Login
with Google</a>

Теперь откройте файл html в браузере и нажмите ссылку. Вы заметите, что сервер Google перенаправляет браузер на указанную вами REDIRECT_URI. Либо вы видите, что в журналах вашего веб-сервера (если сервер работает), либо в браузере будет отображаться сообщение об ошибке, и вы можете увидеть URL со всеми параметрами запроса, отправленными Google, в адресной строке браузера.

См. в документах, что ваш сервер должен ответить на перенаправленный запрос, чтобы наконец появился экран согласия.

Когда он появляется, процедура аналогична: вы - как пользователь - предоставляете запрошенные разрешения и когда вы нажмете кнопку, Google снова ответит перенаправлением, а затем вы извлечете токен из параметров запроса.

...