diff --git a/Gemfile b/Gemfile index 766e3fd699b482ff3ff1c0d230f5e2338a65b324..cd11c7ceb911c4e2730c7a4e1bc984f4b1118a78 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ gem 'devise_invitable', '~> 0.3.4' #Authentication gem 'omniauth' - +gem 'twitter' #Mongo gem 'mongo_mapper', :branch => 'rails3', :git => 'git://github.com/jnunemaker/mongomapper.git' gem 'bson_ext', '1.1' diff --git a/app/controllers/omniauth_services_controller.rb b/app/controllers/omniauth_services_controller.rb index cbc59be69763d0929244574a77d483ce1a4911a8..b1574687592470ab80ff26e523c485d8c029f282 100644 --- a/app/controllers/omniauth_services_controller.rb +++ b/app/controllers/omniauth_services_controller.rb @@ -13,10 +13,13 @@ class OmniauthServicesController < ApplicationController def create auth = request.env['omniauth.auth'] - - puts auth['extra']['access_token'].inspect - - current_user.services.create(:provider => auth['provider'], :uid => auth['uid']) + access_token = auth['extra']['access_token'] + user = auth['user_info'] + current_user.services.create(:nickname => user['nickname'], + :access_token => access_token.token, + :access_secret => access_token.secret, + :provider => auth['provider'], + :uid => auth['uid']) flash[:notice] = "Authentication successful." redirect_to omniauth_services_url end diff --git a/app/controllers/status_messages_controller.rb b/app/controllers/status_messages_controller.rb index 5268184721f5ec9713e5a5145a5d3ef6fb7377ca..2e4c744725af114f9766d510baa81d57340d05b2 100644 --- a/app/controllers/status_messages_controller.rb +++ b/app/controllers/status_messages_controller.rb @@ -10,12 +10,17 @@ class StatusMessagesController < ApplicationController def create data = clean_hash params[:status_message] + message = params[:status_message][:message] - if logged_into_fb? && params[:status_message][:public] == '1' - current_user.post_to_message_fb(params[:status_message][:message], @access_token) + if params[:status_message][:public] == '1' + current_user.post_to_twitter(message) + if logged_into_fb? + current_user.post_to_message_fb(message, @access_token) + end end @status_message = current_user.post(:status_message, data) + render :nothing => true end diff --git a/app/models/omniauth_service.rb b/app/models/omniauth_service.rb index 1fe6ece3203e1d55dc3702ccca49ccc62f416fa7..d30ab9f7dcb9002b5a2741057a43a545251b432f 100644 --- a/app/models/omniauth_service.rb +++ b/app/models/omniauth_service.rb @@ -9,5 +9,7 @@ class OmniauthService key :provider, String key :uid, String - + key :access_token, String + key :access_secret, String + key :nickname, String end diff --git a/app/models/user.rb b/app/models/user.rb index 8d876f0e659d422384e31a8c4b5e8662f961dfce..1bcc5417c20fe5edb7ba07ab806133fe1fb5b3b1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -161,6 +161,16 @@ class User EventMachine::HttpRequest.new("https://graph.facebook.com/me/feed?message=#{message}&access_token=#{access_token}").post end + def post_to_twitter(message) + twitter = self.services.find_by_provider("twitter") + if twitter + oauth = Twitter::OAuth.new(SERVICES['twitter']['consumer_token'], SERVICES['twitter']['consumer_secret']) + oauth.authorize_from_access(twitter.access_token, twitter.access_secret) + client = Twitter::Base.new(oauth) + client.update(message) + end + end + def intitial_post(class_name, aspect_ids, options = {}) post = build_post(class_name, options) post.socket_to_uid(id, :aspect_ids => aspect_ids) if post.respond_to?(:socket_to_uid) diff --git a/app/views/omniauth_services/index.html.haml b/app/views/omniauth_services/index.html.haml index 6e77ade58bbc52696959e712c623ce631a97538b..9b6be3946b9dcc6ba1c3721971c4ba9c0984f930 100644 --- a/app/views/omniauth_services/index.html.haml +++ b/app/views/omniauth_services/index.html.haml @@ -8,9 +8,10 @@ %ul#stream - for service in @services %h3 - = service.provider + %b= service.provider + logged in as %b - =service.uid + = service.nickname = link_to "disconnect", service, :confirm => "disconnect #{service.provider}?", :method => :delete = link_to "Connect to twitter", "/auth/twitter"