Ruby on rails Ruby和Twitter:从请求令牌获取访问令牌?

Ruby on rails Ruby和Twitter:从请求令牌获取访问令牌?,ruby-on-rails,ruby,twitter,oauth,Ruby On Rails,Ruby,Twitter,Oauth,我目前正在处理从试图通过Twitter登录的用户处获取oauth令牌/密码的第3步 第3步告诉我将此请求发送到API,但我仍然无法确定如何发送。我目前拥有oauth_令牌和oauth_验证器,但是如何发送此POST请求以获取oauth_令牌、oauth_令牌和密钥对 有没有标准的Oauth Ruby gem可以用来发送此POST请求?我在网上看到传递@accessToken对象的例子,但我没有这样的对象。我只有oauth_令牌和oauth_验证器(作为字符串)。考虑到这两件事,我如何将它们转换为

我目前正在处理从试图通过Twitter登录的用户处获取oauth令牌/密码的第3步

第3步告诉我将此请求发送到API,但我仍然无法确定如何发送。我目前拥有oauth_令牌和oauth_验证器,但是如何发送此POST请求以获取oauth_令牌、oauth_令牌和密钥对

有没有标准的Oauth Ruby gem可以用来发送此POST请求?我在网上看到传递@accessToken对象的例子,但我没有这样的对象。我只有oauth_令牌和oauth_验证器(作为字符串)。考虑到这两件事,我如何将它们转换为oauth_令牌和oauth_令牌密钥

POST /oauth/access_token HTTP/1.1
User-Agent: themattharris' HTTP Client
Host: api.twitter.com
Accept: */*
Authorization: OAuth oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w",
                     oauth_nonce="a9900fe68e2573b27a37f10fbad6a755",
                     oauth_signature="39cipBtIOHEEnybAR4sATQTpl2I%3D",
                     oauth_signature_method="HMAC-SHA1",
                     oauth_timestamp="1318467427",
                     oauth_token="NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0",
                     oauth_version="1.0"
Content-Length: 57
Content-Type: application/x-www-form-urlencoded

oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY
是的,有一个与Twitter进行身份验证的方法。文件是直截了当的

我个人使用Omniauth与和集成访问Twitter,效果非常好

希望这有帮助, Eugen

是的,在Twitter上有身份验证功能。文件是直截了当的

我个人使用Omniauth与和集成访问Twitter,效果非常好

希望这有帮助,
Eugen的常见程序如下:

  • 您可以在上注册您的应用程序

  • 然后为应用程序设置正确的名称、说明和网站值

    App Name
    
    App Description
    
    http://your_app_domain.zone:3000/
    
  • 更改应用程序类型是您的应用程序,默认情况下它具有只读访问类型

  • 设置YOUR应用程序的回调URL:

    http://your_app_domain.zone:3000/auth/twitter/callback
    
  • 存储OAuth工具twitter页面上显示的所有密钥和秘密:

    Consumer key:
    
    Consumer secret:
    
    Access token:
    
    Access token secret:
    
  • 使用Desive或Desive-like-gem在您的站点上设置路由,并使用指定的twitter密钥和机密启用身份验证引擎。现在,路由列表应包括/auth/twitter路径

  • 通过转到
    http://your_app_domain.zone:3000/auth/twitter
    您将被重定向到twitter站点,并使用传递的oauth_令牌返回到您的站点

  • 但是

    您只需接收这些密钥和机密,然后在应用程序中应用,即可避免6分和7分:


    一般程序如下:

  • 您可以在上注册您的应用程序

  • 然后为应用程序设置正确的名称、说明和网站值

    App Name
    
    App Description
    
    http://your_app_domain.zone:3000/
    
  • 更改应用程序类型是您的应用程序,默认情况下它具有只读访问类型

  • 设置YOUR应用程序的回调URL:

    http://your_app_domain.zone:3000/auth/twitter/callback
    
  • 存储OAuth工具twitter页面上显示的所有密钥和秘密:

    Consumer key:
    
    Consumer secret:
    
    Access token:
    
    Access token secret:
    
  • 使用Desive或Desive-like-gem在您的站点上设置路由,并使用指定的twitter密钥和机密启用身份验证引擎。现在,路由列表应包括/auth/twitter路径

  • 通过转到
    http://your_app_domain.zone:3000/auth/twitter
    您将被重定向到twitter站点,并使用传递的oauth_令牌返回到您的站点

  • 但是

    您只需接收这些密钥和机密,然后在应用程序中应用,即可避免6分和7分:


    使用
    twitter
    oauth
    gems,尝试以下rails控制器操作:

      def redirect
        consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, {
          :site => "https://api.twitter.com", 
          :scheme => :header
        })
    
        request_token = consumer.get_request_token(:oauth_callback => CALLBACK_URL)
        session[:twitter_request_token] = request_token
    
        redirect_to request_token.authorize_url #=> "https://api.twitter.com/oauth/authorize?oauth_token=XYZ"
      end
    
      def callback
        request_token = session[:twitter_request_token]
    
        access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
        client = Twitter::REST::Client.new(
          :consumer_key => CONSUMER_KEY,
          :consumer_secret => CONSUMER_SECRET,
          :access_token => access_token.token,
          :access_token_secret => access_token.secret
        )
        twitter_user = client.user
    
        redirect_to root_url # or do something with the twitter_user
      end
    

    另请参见:

    使用
    twitter
    oauth
    gems,尝试以下rails控制器操作:

      def redirect
        consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, {
          :site => "https://api.twitter.com", 
          :scheme => :header
        })
    
        request_token = consumer.get_request_token(:oauth_callback => CALLBACK_URL)
        session[:twitter_request_token] = request_token
    
        redirect_to request_token.authorize_url #=> "https://api.twitter.com/oauth/authorize?oauth_token=XYZ"
      end
    
      def callback
        request_token = session[:twitter_request_token]
    
        access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
        client = Twitter::REST::Client.new(
          :consumer_key => CONSUMER_KEY,
          :consumer_secret => CONSUMER_SECRET,
          :access_token => access_token.token,
          :access_token_secret => access_token.secret
        )
        twitter_user = client.user
    
        redirect_to root_url # or do something with the twitter_user
      end
    

    另请参见:

    我的答案有用吗?我的答案有用吗?谢谢你今天的提醒!在def回调请求\u令牌=会话[:twitter\u请求\u令牌]中显示null。。我是不是错过了什么?谢谢你今天的安排!在def回调请求\u令牌=会话[:twitter\u请求\u令牌]中显示null。。我有什么遗漏吗?