2014-04-30 1 views
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> 

답변

0

각 트위터 사용자에게 앱으로 권한을 부여해야합니다 (소비자 키 및 소비자 비밀번호로만 기억함). 당신은 당신은 당신의 사용자 계정에서 트윗을 게시 할 수 있습니다 REST 클라이언트에 이러한 toekn와 비밀을 설정하면 내가 지금

access_token = request_token.get_access_token(:oauth_verifier => params[:oauth_verifier]) 
token = access_token.token 
secret = access_token.secret 

이 URL에 의해

consumer = OAuth::Consumer.new($TWITTER_CONSUMER_KEY, $TWITTER_CONSUMER_SECRET, :site => "https://api.twitter.com") 
request_token = consumer.get_request_token(:oauth_callback => "http://localhost/twitter/auth_callback") 
return request_token.authorize_url 

:

나는 간단한 방법으로 이런 짓을 .

관련 문제