gpt4 book ai didi

ruby-on-rails - 如何使用 oauth gem 和 twitter 1.0.0 gem 对 Rails 应用程序中的用户进行身份验证?

转载 作者:行者123 更新时间:2023-12-04 06:34:14 25 4
gpt4 key购买 nike

Jnunemaker 刚刚更新了他的推特 gem (https://github.com/jnunemaker/twitter) 并删除了 Twitter::Oauth 类。我的代码看起来不太像他的例子,所以我在更新它时遇到了问题。以下是我的代码在 twitter 0.9 gem 中的表现:

用户 Controller

def oauth
consumer = Twitter::OAuth.new('mykey','mysecret')
request_token = consumer.request_token
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect_to 'http://api.twitter.com/oauth/authorize?oauth_token='+request_token.token
end

def callback
consumer = Twitter::OAuth.new('mykey','mysecret')
atoken, asecret = oauth.authorize_from_request(session[:request_token], session[:request_token_secret], params[:oauth_verifier])
consumer.authorize_from_access(atoken,asecret)
user = Twitter::Base.new(consumer).verify_credentials

#and then I create a new user in my application, with attributes such as the user's follower count, etc
end

这是我尝试更改此代码的示例:

用户 Controller

def oauth
consumer = OAuth::Consumer.new("mykey", "mysecret", :site => "siteurl")
request_token = consumer.get_request_token
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect_to 'http://api.twitter.com/oauth/authorize?oauth_token='+request_token.token
end

def callback
consumer = OAuth::Consumer.new("mykey", "mysecret", :site => "siteurl")
request_token = session[:request_token]
atoken = OAuth::RequestToken.new(consumer, request_token.token, request_token.secret).get_access_token(:oauth_verifier => params[:oauth_verifier])
consumer.authorize_from_access(atoken)
user = Twitter::Client.new(consumer).verify_credentials

gem 文件

...
gem 'oauth'

我确定我的回调方法有很多问题,但有一点很奇怪,当我在本地运行时我的 oauth 方法工作正常,但当我在本地运行时给我一个“502 Bad Gateway”错误从我的实时(使用 heroku 部署)版本尝试。

最佳答案

如果您不能让它与您现有的一起使用,我已经能够将 Omniauth gem 与 Twitter gem 一起使用。 Omniauth is very easy to setup.

要使用 Twitter gem,只需在 Omniauth 回调完成后获取访问 token 信息:

token = omniauth['credentials']['token'], 
secret = omniauth['credentials']['secret']

然后在使用 Twitter gem 方法之前设置 Twitter gem 配置设置

Twitter.oauth_token = token
Twitter.oauth_token_secret = secret

Twitter.home_timeline.first.text

(您必须配置 Twitter gem consumer_key 和 consumer_key_secret 如果您还没有在初始化文件中设置...)

关于ruby-on-rails - 如何使用 oauth gem 和 twitter 1.0.0 gem 对 Rails 应用程序中的用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com