【问题标题】:Can't get my access_token using Rails and the OAuth gem无法使用 Rails 和 OAuth gem 获取我的 access_token
【发布时间】:2011-03-26 14:41:32
【问题描述】:

我正在开发使用 Twitter OAuth 的 Rails 3 应用程序,但我遇到了麻烦,因为在点击“允许”后,我显然无法获得 access_token,当我转到 Twitter 时,Twitter 将我重定向回我的应用程序 URL。 com/settings/connections 我无法在此处看到我的应用已获得授权。我猜我的控制器有问题,希望您能指出:

class OauthController < ApplicationController
  def start
    request_token = client.get_request_token(:oauth_callback => 'http://localhost:3000')
    session[:request_token] = request_token.token
    session[:request_token_secret] = request_token.secret
    redirect_to request_token.authorize_url
  end

  def callback
    @access_token = client.get_access_token(:oauth_verifier => params[:oauth_verifier])
    render :json => access_token_get('https://api.twitter.com/account/verify_credentials.json')
  end

  protected 

  def client
    @consumer = OAuth::Consumer.new(
      'key','secret',
      :site => 'https://api.twitter.com',
      :authorize_url => 'https://api.twitter.com/oauth/authorize',
      :access_token_url => 'https://api.twitter.com/oauth/access_token'
    )
  end
end

请帮忙,告诉我我的错误在哪里,谢谢关注!

罗德里戈·阿尔维斯·维埃拉。

【问题讨论】:

  • 其实有一个'def start; request_token = client.get_request_token(:oauth_callback => 'localhost:3000')' 标记隐藏了代码,我无法修复:-p
  • 这可能是一个愚蠢的问题,但你在推特上注册了应用程序吗?
  • 是的,我做到了。这就是让问题更奇怪的原因:/

标签: ruby-on-rails ruby authentication twitter oauth


【解决方案1】:

我不确定你的代码的哪一部分不工作,可能与 access_token_get 方法有关,但我会告诉你我是如何做到的——也许它会有所帮助..

在你初始化 @access_token 的那一行之后,我做了这样的事情:

@response = client.request(:get, "/account/verify_credentials.json", @access_token, { :scheme => :query_string })
case @response
when Net::HTTPSuccess
  user_info = JSON.parse(@response.body)
  unless user_info['screen_name']
    # authentication failed, error handling
  end
  # We have an authorized user, save the information to the database using @access_token.token and @acess_token.secret
else
  # error handling
end

(哦,我使用的是 json gem,所以请确保在顶部 gem install jsonrequire 'json'

希望有帮助!

【讨论】:

    猜你喜欢
    • 2015-12-19
    • 2021-02-06
    • 2022-08-12
    • 1970-01-01
    • 2019-11-14
    • 2017-02-07
    • 2012-06-07
    • 2016-12-09
    相关资源
    最近更新 更多