我目前处于尝试通过Twitter登录的用户获取oauth令牌/秘密的处理的第3步。 https://dev.twitter.com/docs/auth/implementing-sign-twitter
第3步告诉我将此请求发送给API,但我不知道如何这样做。我目前同时拥有oauth_token和oauth_verifier,但是如何发送此POST请求以获取oauth_token,oauth_token_secret对?
我可以使用标准的Oauth Ruby gem来发送此POST请求吗?我在网上看到了传递@accessToken对象的例子,但我没有这样的对象可用。我只有oauth_token和oauth_verifier(作为字符串)。鉴于这两件事,我如何将它们转换为oauth_token和oauth_token_secret?
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
答案 0 :(得分:4)
使用twitter
和oauth
宝石尝试以下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
另请参阅:http://barkingiguana.com/2009/10/13/twitter-oauth-authentication-using-ruby/
答案 1 :(得分:0)
是的,有Omniauth gem用于Twitter的身份验证。文档很简单。
我个人使用与Devise集成的Omniauth和Twitter gem来访问Twitter - 效果非常好。
希望这有帮助, 欧根
答案 2 :(得分:0)
常见程序如下:
您可以在twitter development page上注册您的应用。
然后为您的应用设置正确的名称,描述和网站值。
App Name
App Description
http://your_app_domain.zone:3000/
更改应用程序类型是您的应用程序,默认情况下它具有只读访问类型。
为yuor应用程序设置回调URL:
http://your_app_domain.zone:3000/auth/twitter/callback
存储在 OAuth工具推特页面上所有的所有密钥和秘密:
Consumer key:
Consumer secret:
Access token:
Access token secret:
使用指定的Twitter密钥在设计或设计类似宝石的网站上设置路由,并使用密码启用身份验证引擎。路线列表现在应包括 / auth / twitter 路径。
转到http://your_app_domain.zone:3000/auth/twitter
,您将被重定向到Twitter网站,并通过oauth_token
<强>但是强>
您可以简单地接收这些密钥和密钥,然后在您的应用中应用,避免 6 和 7 点:
client = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end