在我的rails应用程序中帮助twitter echo和oauth

我的应用程序要求用户使用他们的Twitter帐户登录! 我正在使用tardate oauth lib(来自Paul Gallagher)。 这很好。 我想为我的网站创建一个API(实际上是用户身份validation部分)。 Twitter Basic Auth已被弃用,现在twitter使用twitter echo。 如果用户想要在我的应用程序中通过api上传文件,他必须在他的请求中包含上述标题。 所以,我的问题是:(我认为标题会直接点击twitter api而twitter会在我的url中返回响应..这是对的吗?)

我的应用程序如何处理Twitter响应? json包含用户的信息(或否定响应401),以便继续上传或不继续。 类似于twitpic API的东西。(http://dev.twitpic.com/docs/2/upload/)或类似的服务。

curl -v -H 'X-Auth-Service-Provider: https://api.twitter.com/1/account/verify_credentials.json' -H 'X-Verify-Credentials-Authorization: OAuth realm="http://api.twitter.com/", oauth_consumer_key="yTrEIQH6jhtmLUypg8T5", oauth_signature_method="HMAC-SHA1", oauth_token="514797-YuI8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWTyu",oauth_timestamp="1271323750", oauth_nonce="oYu6nMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7U9Y", oauth_version="1.0", oauth_signature="CV4bTfE7Rs9J1kafTGwufLJdspo%3D"' -F "file=@/path/to/file" http://localhost:3000/api/upload.xml 

我的def上传目前适用于通过api进行的简单上传。 没有用户信息。 但通过这种方式,我的应用程序不知道文件所有者!

 def upload file = File.new file.file = params[:file] # ... extra code respond_to do |format| if file.save format.xml { render :xml => file, :status => :created, :location => file } else format.xml { render :xml => file.errors, :status => :unprocessable_entity } end end end 

你知道编码逻辑怎么样?

任何帮助将受到高度赞赏:-)

我不确定它在你的特定情况下是如何工作的,我不确定你是否考虑使用其他插件,但我使用的是OmniAuth和OmniSocial,它实际上是由omniauth构建的。

你可以在Ryan Bates找到关于omniauth的精彩截屏video。 即使您不打算使用omniauth,您也可能会在他的截屏video中找到适合您情况的有用逻辑。

Omniauth

第1部分

第2部分

或者在这里查看全社会

Omnisocial

对全社会的歪曲

Github上的全社会

我希望这可以帮助你! 祝好运!

我认为最好的方法是抓住标题,然后使用赞助人..

 auth_headers = request.headers["X-Verify-Credentials-Authorization"] 

赞助人可以向https://api.twitter.com/1/account/verify_credentials.json发帖请求,然后检查resp状态!