【发布时间】:2014-04-30 15:55:22
【问题描述】:
我为用户设置了 Devise 和 Omniauth,以便通过电子邮件、Twitter 和 Facebook 登录。我不想让用户从应用程序内部发布消息。
我目前正在使用以下代码,但它仅从我的 Twitter 帐户发布。我假设这与未正确设置 Oauth_token 有关。不管是什么账号登录应用,还是来自我的账号。
在我的用户模型中,我有以下代码(我已经更改了我的密钥和令牌)...
def self.find_for_twitter_oauth(auth, signed_in_resource=nil)
user = User.where(:provider => auth.provider, :uid => auth.uid).first
if user
return user
else
registered_user = User.where(:email => auth.uid + "@twitter.com").first
if registered_user
return registered_user
else
user = User.create(full_name:auth.extra.raw_info.name,
provider:auth.provider,
uid:auth.uid,
email:auth.uid+"@twitter.com",
oauth_token:auth.credentials.token,
oauth_secret:auth.credentials.secret,
password:Devise.friendly_token[0,20],
)
end
end
end
def tweet(tweet)
client = Twitter::REST::Client.new do |config|
config.consumer_key = "XXXXXXXX"
config.consumer_secret = "XXXXXXX"
config.access_token = "XXXXXXX-XXXXX"
config.access_token_secret = "XXXXXXX"
end
client.update(tweet)
end
在我的 config/initializer/devise.rb 我有以下内容:
# Add Twitter OmniAuth
require 'omniauth-twitter'
config.omniauth :twitter, ENV['TWITTER_CONSUMER_KEY'], ENV['TWITTER_CONSUMER_SECRET']
# Add Facebook OmniAuth
require 'omniauth-facebook'
config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'], :scope => 'basic_info, email, publish_stream'
在我看来,我正在使用一个表格让他们填写并提交推文。
<p>
<%= form_for :tweet, url: tweets_path, method: :post do |f| %>
<%= f.text_field :message %>
<%= f.submit "Send Tweet" %>
<% end %>
</p>
【问题讨论】:
标签: ruby-on-rails twitter devise omniauth