Nagi ze mną, to będzie Długie.Praca (omniauth-facebook) i (omniauth-twitter)
Używam:
- Ruby on Rails 4
- Devise 3.0.3
- omniauth (1.1.4)
- omniauth-facebook (1.4.1)
- omniauth -twitter (1.0.0)
Niedawno skonfigurowałem mój omniauth-facebook
i wszystko działa ine. Teraz chcę dodać omniauth-twitter
, ale jakoś zepsułem wszystko, całkiem źle.
1.) skonfigurować moją Omniauth-Facebook
zrobiłem to (w skrócie):
gem 'omniauth'
gem 'omniauth-facebook'
2.) dodane kolumny "provider
" i "uid
" do mojego modelu użytkownika.
3.) Następnie oświadczyłem dostawcy w moim config/inicjalizatorów/devise.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.) edytowany moim modelu User.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
i dodano atrybuty do opracowania:
:omniauth_providers => [:facebook]
5.) I edycja trasy:
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
KONIEC
Mimo to działało idealnie na Facebooku, próbowałem przez kilka godzin teraz, aby dostać tę pracę na Twitterze, a ja po prostu nie mogę rozwiązać.
Jeśli ktoś, kto ma doświadczenie w tym, czy po prostu wie, że rozwiązaniem mogłoby pomóc mi to skonfigurować, byłbym bardzo wdzięczny :)
Dziękujemy wam, i przepraszam za długi post.
oprócz
Twitter nie zapewnia: email Atrybut więc muszę podzielić mojego procesu rejestracji Użytkownik Chyba?
Moja Twitter akcja w moim model użytkownika
# 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
miałem migrować POTWIERDZALNE dla użytkowników ->How To: Add :confirmable to Users
Problem moja forma jest (przynajmniej im dotarcie do tej Poing teraz :))
To zawsze pomaga, jeśli wyjaśnić i/lub wyświetlić rzeczywiste błędy, które otrzymujesz I długi post nie stanowi problemu, im więcej informacji, tym weselej ... Twój jest w rzeczywistości krótszy niż wiele –
czy umieścisz kod 'devise.rb' dla twittera –
nie potrzebujesz klejnotu omniauth, jeśli masz inne – ahnbizcad