0

所以我用谷歌登录,它用代码参数访问了我的回调 url。

这是我启动客户的方式,我正在使用 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

不幸的是,由于谷歌的回复说您请求的页面无效,我无法获取令牌。

4

1 回答 1

1

看起来您并没有token_url在客户端的初始化或以后定义值。它是“o/oauth2/token”。默认情况下使用“/oauth/token”,因此这可能是导致“您请求的页面无效”错误的原因。

来源: http ://rubydoc.info/gems/oauth2/0.8.0/OAuth2/Client#initialize-instance_method

于 2012-07-25T00:23:36.957 回答