2012-07-17 52 views
0

我看到了许多关于同一问题的问题,但我无法找到解决方法,所以我在问一个问题以确保我没有错过任何东西。无法使用oauth_verifier获取访问令牌,不断收到401错误

在twitter上,我将callback_url设置为'https:// my_app_url /'。

# consumer 
@consumer = OAuth::Consumer.new('consumer_id', 
           'secret_key', 
           :site => 'https://api.twitter.com') 

# request_token 
@request_token = @consumer.get_request_token(:oauth_callback => "https://my_app_url/?state=#{state}") 

# then get the user to log in via 
login_url = @request_token.authorize_url 

# I have a params[:oauth_token] and params[:oauth_verifier] in return 
# I don't know what the oauth token is for 
# I then should be able to get an access token 

# all oauth calls are done in an object so @request_token has been conserved. 
@access_token = @request_token.get_access_token(:oauth_verifier => params[:oauth_verifier]) 

# then it happens. 
# => 401 Unauthorized 

我不知道为什么401被提出。有没有一个我已经失踪的步骤? 我将不胜感激任何帮助。

回答

1

get_request_token为您提供临时OAuth令牌,以便在OAuth身份验证流程中对您进行身份验证。 OAuth验证程序证明用户授权应用程序。您必须将此最后一项提供给get_access_token才能获得将用于所有已验证请求的最终OAuth令牌。

如需进一步信息,请考虑阅读官方Twitter文档处理这个:https://dev.twitter.com/docs/auth/using-oauthhttps://dev.twitter.com/docs/auth/implementing-sign-twitter对过程的描述)

+0

感谢您的解释。我在我的代码中遗漏了一个错误,并且request_token没有正确保存,所以我从一个新生成的request_token中获得了access_token,这与我获得的oauth_verifier不匹配。 – oldergod 2012-07-18 00:19:43