Я использую драгоценный камень OAuth2 для связи с службами Google. Я не понимаю, как реализовать обратный вызов, который получает ответ с кодом OAuth, чтобы получить токен доступа. Когда я устанавливаю точку останова в методе callback
, он никогда не вызывает вызов.Как настроить маршрут для обратного вызова oauth
Вот мой код:
Маршруты:
match '/oauth2/callback' => 'reports#callback'
Actual перенаправлением URL:
http://localhost/oauth2/callback?code=111111
ReportsController:
def new
client = OAuth2::Client.new(ENV['GA_CLIENT_ID'], ENV['GA_SECRET_KEY'], {
:authorize_url => 'https://accounts.google.com/o/oauth2/auth',
:token_url => 'https://accounts.google.com/o/oauth2/token'
})
redirect_to client.auth_code.authorize_url({
:scope => 'https://www.googleapis.com/auth/analytics.readonly',
:redirect_uri => 'http://localhost/oauth2/callback',
:access_type => 'offline'
})
end
def callback
oauth_code = params[:code]
# Create access token with oauth_code
end
Это имеет смысл, но когда я изменяю свой URL-адрес перенаправления на 'http: // SITE_NAME/oauth2/callback' и тестирую в моем проекте env, обратный вызов никогда не запускается. Я обязательно использовал свой продукт client_id и секрет из консоли google api, а также сопоставил URL-адрес перенаправления. Я даже добавляю 'assert_prompt => 'force'' – mnort9
@ mnort9 и все же ничего не имею в вашем журнале производства, например, что-то, что нельзя было проложить? Возможны две вещи: 1) Google не отправляет вам никаких запросов или 2) отправляет неверный запрос и получает ошибку маршрутизации. Я предлагаю также попытаться загрузить консоль на производство и попробовать вызовы OAuth вручную, чтобы увидеть, можете ли вы найти что-то не так. – fotanus
Хорошо, я получил эту работу в производстве. Я проверю ваш метод локально, как только смогу. – mnort9