Tag: twitter oauth

为什么twitter oauth访问令牌无效/过期(rails 3)

过去三天我一直试图解决这个问题,但无济于事。 我所要做的就是允许使用Twitter登录的用户向他们的帐户发推文。 这是我要解决的错误消息: Twitter::Error::Unauthorized in PostsController#create Invalid or expired token 我尝试了各种不同的东西,但我回到了完整的360圈到同一条消息。 这就是我现在所处的位置: class ApplicationController provider.token, :secret => provider.secret) rescue nil end @twitter_user end 这是抛出错误的地方 class PostsController < ApplicationController def create twitter.update(@post.content) end 这是模式的布局方式 create_table “authentications”, :force => true do |t| t.integer “user_id” t.string “provider” t.string “uid” t.datetime “created_at”, :null => false t.datetime “updated_at”, :null => […]

如何通过API从Twitter获取用户信息?

我正在开发API以将rails应用程序与twitter集成。 我只收到客户: { provider: ‘twitter’, user_id: ‘USER_ID’, access_token: ‘ACCESS_TOKEN’ } 但是如果用户没有注册等我需要创建用户并将其保存到数据库中。我有模型user和authentication (用户有很多身份validation): class User validate :first_name, :last_name, :email, presense: true has_many :providers endd class Authentication validate :provider, :user_id, :access_token, :refresh_token, :expires_at, presense: true belongs_to :user end Twitter应用已经创建,所有权限都已正确设置。 问题: 要将具有身份validation的用户保存到数据库中 – 我需要拥有所有字段。 题: 如果我有provider , user_id和access_token ,我该如何获得其他字段: email , first_name , last_name , refresh_token和expires_at 。 我应该提出哪种API请求? […]

Twitter api表示速率限制为180(按用户身份validation),但使用twitter gem仅限于15个呼叫

我正在使用twitter gem与twitter API进行交互。 我正在使用single user authentication (不是仅应用程序身份validation),如下所示https://github.com/sferik/twitter/blob/master/examples/Configuration.md#single-user-authentication 我有一个页面,用户点击以使用twitter登录(我正在使用http://sign-in-with-twitter.herokuapp.com/ ) 一旦用户通过身份validation,我就获得token和secret ,然后使用我的app consumer_key和consumer_secret以及签名用户的token和secret来初始化Twitter::REST::Client ,如下所示 module Ktwitter class Manager attr_accessor :client def initialize token, token_secret @client = Twitter::REST::Client.new do |config| config.consumer_key = XXXXXXXXXXXXX config.consumer_secret = ZZZZZZZZZZZZZ config.access_token = token config.access_token_secret = token_secret end end def user @client.user end end end obj = Ktwitter::Manager.new request.env[‘omniauth.auth’][‘credentials’][‘token’], request.env[‘omniauth.auth’][‘credentials’][‘secret’] 我有一个(撬)断点,在那里我运行obj.client.user 15次(不到1分钟 […]

我应该如何存储Twitter令牌,以便用户不必每次都去twitter_oauth?

我正在开发twitter应用程序,所以我使用twitter_oauth gem进行授权。 这是非常基本的代码。 因此,如果用户进入/登录它将用户重定向到Twitter登录,一旦他登录并单击授权应用程序,他将被重定向回我的网站。 begin callback = ENV[‘twitter_callback’] || “http://127.0.0.1:4567/login/success” request_token = @twitterClient.request_token(:oauth_callback => callback) MemcacheUtil::set(“request_token_twitter”, request_token, 3000) redirect request_token.authorize_url rescue Exception => e puts e.message puts e.backtrace.join(“\n”) raise Exception.new(“Something’s wrong with twitter!”) end 这就是我想做的事情。 如果用户退出并且他想再次登录。 现在,如果他点击登录按钮,他将再次被重定向到Twitter以授权该应用程序。 无论如何我有可能克服这一点。 我注意到一些网站然后即使我退出并再次点击登录。 它做了一些事情,并没有去推特网站登录我。 我怎么做? 他们把我的令牌和秘密保存在cookies中吗? 例如: http : //www.klout.com

如何使用Twitter gem回复推文?

r = 569186681850601472 client.update(‘@ooidesigns work’, in_reply_to_tweet_id: r) 我正在尝试使用twitter gem和客户端( Twitter::REST )类回复推文,但只有该消息是推文而且它不回复推文。 任何帮助表示赞赏

设计,Omniauth和Twitter

我正在开发一个使用devise和omniauth的Rails 3应用程序,并按照https://github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview中给出的示例进行操作,它适用于Facebook帐户,但是当我尝试添加Twitter auth,我收到了’401 Unauthorized’回复。 为了跟踪问题,我将api.twitter.com的URL切换为http并转储网络流量,看起来它是两次POST到/ oauth / access_token。 我第一次得到200响应,第二次得到401.在它之间使用’GET /1/account/verify_credentials.json’方法成功获取经过身份validation的用户的用户信息。 我不明白为什么代码第二次调用access_token方法。 在我的config / initializers / devise.rb文件中,我添加了: config.omniauth :twitter, “consumer_key”, “consumer_secret” 除了上面的Omniauth概述页面中列出的其余代码。 我还在我的OmniauthCallbacksController中添加了一个’twitter’方法,但由于401,它永远不会被调用。 任何帮助将非常感激。

Ruby方式为OAuth生成HMAC-SHA1签名

我正在编写一个小的ruby程序,可以通过OAuth与Twitter一起玩,还没有找到正确的方法来进行HMAC-SHA1签名。 到目前为止,我搞砸了 Base64.encode64(OpenSSL::HMAC.hexdigest(digest, key, stuff)).chomp 但这会输出Twitter拒绝的东西,而不是有效的签名。 我实际上以更糟糕的方式解决了它,请尽量不要打我: php -r “echo rawurlencode(base64_encode(hash_hmac(‘sha1’, ‘#{@signature}’, ‘#{llave}’, true)));” 这最后一个实际上有效,我可以四处寻找我的东西。 我想要一些关于如何在不回复PHP的情况下实际执行此操作的提示。 当我试图学习一门语言时,我不是很喜欢图书馆,所以gem几乎是不可能的。 谢谢!

Twitter ::错误::在PostsController中未经授权#create – 令牌无效或过期

为什么“创建”会给我一个无效/过期的令牌错误? 用户可以很好地登录(因此他们经过正确的身份validation),但是当他们尝试创建post时,我收到此错误。 我正在使用Omniauth gem(v1.1.4)进行身份validation,使用Twitter gem(v4.6.2)发布到Twitter。 如果重要的话,Omniauth-twitter的gem是v.0.0.16。 这是导致我错误的代码 class PostsController < ApplicationController def create Twitter::Client.new.update(@post.content) end end 这是用户模型的一部分(user.rb) def twitter unless @twitter_user provider = self.authentications.find_by_provider(‘twitter’) @twitter_user = Twitter::Client.new(:oauth_token => provider.token, :oauth_token_secret => provider.secret) rescue nil end @twitter_user end 这是我的omniauth初始化程序 Rails.application.config.middleware.use OmniAuth::Builder do configure do |config| config.path_prefix = ‘/auth’ end provider :twitter, “xxxxxxxxxxxxxxxxxxxx”, “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” end Twitter.configure do […]

Twitter中的Ruby三脚授权

我在铁轨上尝试我的手ruby。 大部分时间我都在Sinatra编写代码。 无论如何,这个问题可能不需要对框架做任何事情。 这个问题听起来可能是一个非常新手的问题。 我第一次玩Twitter 1.1 API和OAuth。 我创建了一个应用程序XYZ并在Twitter上注册了它。 我得到了XYZ的消费者密钥,即CONSUMER_KEY和消费者秘密,即CONSUMER_SECRET。 我还获得了XYZ自己的访问令牌,即ACCESS_TOKEN和访问机密,即ACCESS_SECRET XYZ应用程序类型:读取,写入和访问直接消息XYZ回调URL: http ://www.mysite.com/cback我已检查过:允许此应用程序用于通过Twitter登录 我想要做的很简单: 1)用户访问我的网站并点击链接Link your twitter account (不用twitter登录) 2)打开twitter弹出窗口,用户授权XYZ代表他/她执行操作 3)一旦用户允许并弹出窗口关闭,XYZ应用程序将获取用户的访问令牌并保密,并保存在数据库中。 4)然后XYZ使用该用户的令牌和秘密来执行将来的操作。 我可能很蠢,这样的工作流已经在几千个网站上实现,Twitter API文档解释了这个三方认证,但我仍然无法弄明白。 我已阅读https://dev.twitter.com/docs/auth/3-legged-authorization和https://dev.twitter.com/docs/auth/implementing-sign-twitter遗憾的是,互联网上没有找到ruby代码用一步一步的例子解释。 当用户单击Link your twitter account时,应使用什么链接打开Twitter身份validation页面。 任何人都可以在这里用我的pseduo凭证编写一些伪代码来实现我的目标,从这个工作流程结束到最后? 谢谢。 更新: 我开始请求请求令牌为 require ‘oauth’ consumer = OAuth::Consumer.new(CONSUMER_KEY, CONSUMER_SECRET, { site: “https://twitter.com”}) request_token = consumer.get_request_token oauth_callback: ‘http://www.mysite.com/tauth’ redirect_to request_token.authorize_url