所以我使用Google登录,并使用代码参数点击我的回调网址。
以下是我启动客户端的方式,我正在使用oauth2 gem。
def oauth_client(channel_name)
file = YAML.load_file("#{Rails.root}/config/oauth_credentials.yml")
client_id = file['oauth_credentials'][channel_name]['client_id']
client_secret = file['oauth_credentials'][channel_name]['secret']
site = file['oauth_credentials'][channel_name]['site']
OAuth2::Client.new(client_id, client_secret, site: site, authorize_url: "/o/oauth2/auth", connection_opts: { params: { scope: "https://www.googleapis.com/auth/adsense https://www.googleapis.com/auth/analytics.readonly" } })
end
def oauth_url_for(channel_name)
client = oauth_client(channel_name)
client.auth_code.authorize_url(:redirect_uri => oauth_callback_url(channel: channel_name))
end
这是我的控制器
class Oauth2Controller < ApplicationController
include ApplicationHelper
def callback
token = oauth_client(params[:channel]).auth_code.get_token(params[:code], :redirect_uri => oauth_callback_url(channel: params[:channel]))
current_user.connections.create!(channel: params[:channel], token: token)
render text: request.inspect
end
end
不幸的是,由于谷歌的回复说我请求的页面无效,我无法get_token。
答案 0 :(得分:1)
看起来您不是在客户端初始化中定义token_url
值,或者稍后。它是“o / oauth2 / token”。默认使用“/ oauth / token”,这可能是您“请求的页面无效”错误的原因。
来源: http://rubydoc.info/gems/oauth2/0.8.0/OAuth2/Client#initialize-instance_method