Erste (omniauth-facebook) und (omniauth-twitter) arbeiten

Ich bin mit:

  • Ruby on Rails 4
  • entwickeln 3.0.3
  • omniauth (1.1.4)
  • omniauth-facebook (1.4.1)
  • omniauth-twitter (1.0.0)

Ich vor kurzem meine omniauth-facebook und alles funktioniert einwandfrei. Jetzt möchte ich hinzufügen omniauth-twitter aber irgendwie bin ich Durcheinander zu bringen, ziemlich schlecht.

1.) Auf meine Omniauth-Facebook ich Tat dies (in aller Kürze):

gem 'omniauth'
gem 'omniauth-facebook'

2.) Hinzugefügt die Spalten "provider" und "uid" auf meine Benutzer-Modell.

3.) Weiter, als ich erklärte, dass der Anbieter in meiner config/Initialisierungen/entwickeln.rb:

require "omniauth-facebook"
config.omniauth :facebook, "App_ID", "App_Secret",
                                {:scope => 'email,offline_access',
                                 :client_options => {:ssl => {:ca_file => 'lib/assets/cacert.pem'}},
                                 :strategy_class => OmniAuth::Strategies::Facebook}

4.) Ich bearbeitet meine Modell-Benutzer.rb

# Facebook Settings
def self.find_for_facebook_oauth(auth, signed_in_resource = nil)
    user = User.where(provider: auth.provider, uid: auth.uid).first
    if user.present?
        user
    else
        user = User.create(first_name:auth.extra.raw_info.first_name,
                                             last_name:auth.extra.raw_info.last_name,
                                             facebook_link:auth.extra.raw_info.link,
                                             user_name:auth.extra.raw_info.name,
                                             provider:auth.provider,
                                             uid:auth.uid,
                                             email:auth.info.email,
                                             password:Devise.friendly_token[0,20])
    end
end

Hinzugefügt und die Attribute zu entwickeln:

:omniauth_providers => [:facebook]

5.) Ich bearbeitet die Routen:

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

ENDE

Obwohl dies funktionierte perfekt für Facebook, ich habe schon seit Stunden versucht Sie jetzt, um diese arbeiten für Twitter, und ich kann Sie nicht einfach es herauszufinden.

Wenn jemand, der Erfahrung hat, in diesem, oder einfach nur die Lösung weiß, könnte mir helfen, dies einzurichten wäre ich sehr dankbar 🙂

Danke Jungs, und sorry für den langen Post.

Zusätzlich

Twitter keine :E-Mail-Attribut, so habe ich zu teilen auf meine Benutzer-Registrierung Prozess, den ich denke ?

Meine Twitter Aktion in meinem - User-Modell

# Twitter Settings
def self.find_for_twitter_oauth(auth, signed_in_resource=nil)
    user = User.where(:provider => auth[:provider], :uid => auth[:uid]).first
    unless user
        user = User.create(:first_name => auth[:name],
                                             :user_name => auth[:screen_name],
                                             :provider => auth[:provider], :uid => auth[:uid],
                                             :password => Devise.friendly_token[0,20]
        )
    end
    user
end

# build auth cookie hash for twitter
def self.build_twitter_auth_cookie_hash data
    {
        :provider => data.provider, :uid => data.uid.to_i,
        :access_token => data.credentials.token, :access_secret => data.credentials.secret,
        :first_name => data.name, :user_name => data.screen_name,

    }
end

Hatte ich zum migrieren einer rückmeldefähigen für Benutzer -> Gewusst wie: Hinzufügen :diejenigen die den Benutzern

Meine Form, das Problem, (Zumindest im bekommen dieser poing jetzt 🙂 )

Erste (omniauth-facebook) und (omniauth-twitter) arbeiten

  • Es hilft immer, wenn Sie erklären, und/oder-Anzeige, die tatsächlichen Fehler, die Sie erhalten. Und, ein langer post ist kein problem. Je mehr Informationen, desto besser. Verkaufen ist eigentlich kürzer als viele.
  • setzen Sie die devise.rb - code für twitter
  • Sie brauchen nicht gem omniauth, wenn Sie die andere.
InformationsquelleAutor Mini John | 2013-08-29
Schreibe einen Kommentar