1
사용자가 이메일, 트위터, 페이스 북을 통해 로그인 할 수 있도록 Devise와 Omniauth를 설정했습니다. 사용자가 앱 내부에서 메시지를 트윗 할 수 없도록하려고합니다.레일즈 애플리케이션에서 트위터하기
저는 현재 다음 코드로 작업하고 있지만 내 트위터 계정에서만 올리고 있습니다. 나는 이것이 Oauth_token을 올바르게 설정하지 않는 것과 관련이 있다고 가정하고 있습니다. 앱에 어떤 계정으로 로그인해도 내 계정에서 계속 로그인합니다.
# 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'
: 내 사용자 모델에서
, 나는 코드를 다음과 나는 다음이 내 설정/초기화/devise.rb에서 ...
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
(내 키 토큰을 변경했습니다) 한
제 의견으로는 양식을 작성하여 트윗을 작성하고 제출합니다.
<p>
<%= form_for :tweet, url: tweets_path, method: :post do |f| %>
<%= f.text_field :message %>
<%= f.submit "Send Tweet" %>
<% end %>
</p>