6

Używam OmniAuth + Devise, aby umożliwić użytkownikom rejestrację za pomocą Facebooka/Twittera/Gowalli/etc dołączonych do zwykłych kont użytkowników. Teraz, gdy użytkownik loguje się za pomocą dowolnego z tych kont lub ich konta, wszystkie ich sieci społecznościowe są dołączone do tabeli uwierzytelniania.OmniAuth + Pulling Tweets, Miejsca FB, itp.

Potrzebuję być w stanie pobrać zawartość od dowolnego z tych dostawców, takich jak ich tweety lub ich wpisy na Facebooku, itp. Rozumiem, że będę musiał użyć innego klejnotu, wtyczki, cokolwiek to zrobić, ale uzyskanie konfiguracja potrzebna do pracy z tymi klejnotami (i żądania) jest dla mnie dezorientująca.

Potrzebuję mieć dostęp do elementów konfiguracyjnych dostawcy w omniauth.rb, więc mam klucze API i tajne klucze, itp., Wtedy muszę mieć możliwość pobierania tokenów z rzeczy oAuth w celu wysyłania żądań.

Inne klejnoty, takie jak , wydają się przechowywać oauth_token, oauth_secret i oauth_token, ale OmniAuth nie.

Jak zapewne wiesz, jestem bardzo nowy w Ruby, Railsach i oAuth, więc okazuje się, że jest to bardzo wymagająca aplikacja. Pomoc jest bardzo potrzebna.

Odpowiedz

20

Sortowane!

Dodano tokena oraz tajny do stołu uwierzytelnianie opisaną w http://railscasts.com/episodes/236-omniauth-part-2 ale zmienił linię authentication.build podjąć jeszcze dwa parametry:

authentications.build(
    :provider => omniauth['provider'], 
    :uid => omniauth['uid'], 
    :token => omniauth['credentials']['token'], 
    :secret => omniauth['credentials']['secret'] 
) 

następnie wykorzystał przykład kodu z http://dev.twitter.com/pages/oauth_single_token#ruby

class CronController < ApplicationController 

    def recent_tweets 
     # Exchange your oauth_token and oauth_token_secret for an AccessToken instance. 

     def prepare_access_token(oauth_token, oauth_token_secret) 
      consumer = OAuth::Consumer.new("APIKey", "APISecret" 
       { :site => "http://api.twitter.com" 
       }) 
      # now create the access token object from passed values 
      token_hash = { :oauth_token => oauth_token, 
             :oauth_token_secret => oauth_token_secret 
            } 
      access_token = OAuth::AccessToken.from_hash(consumer, token_hash) 
      return access_token 
     end 

     auth = current_user.authentications.find(:first, :conditions => { :provider => 'twitter' }) 

     # Exchange our oauth_token and oauth_token secret for the AccessToken instance. 
     access_token = prepare_access_token(auth['token'], auth['secret']) 

     # use the access token as an agent to get the home timeline 
     response = access_token.request(:get, "http://api.twitter.com/1/statuses/home_timeline.json") 

     render :json => response.body 
    end 
end 

By ściąganie zawartości z current_user.authentication (im znalezienie pierwszego tak, jak powinien mieć tylko jeden) Mogę pobrać token i bezpieczeństwo i wszystko co dobre.

Teraz mogę to poprawić, zabezpieczyć rzeczy, zabrać z JSON i wziąć to, czego potrzebuję. Jestem pewien, że Facebook będzie bardzo podobny.

+0

Słodki! Wiem dokładnie, co masz na myśli po numerze 2, jak teraz, jak mam zdobyć dane. To było przez cały czas i właśnie wskazałeś mi właściwy kierunek +1! – s84

6

Czy tego właśnie szukasz? http://railscasts.com/episodes/236-omniauth-part-2 :) Pokazuje sposób pobierania danych, takich jak e-mail. Nie jestem pewien, czy tego właśnie szukasz.

+2

Zamknij, poszedłem za tym, ale nie byłem pewien co do następnego kroku. To świetne wideo i może pomóc każdemu, kto tu trafi, więc dziękuję :) –