在我的rails應用程序中使用devise
並且一切工作正常,我現在要做的是讓用戶使用他們的github帳戶登錄到我的應用並創建一個配置文件。使用設計創建一個auth用戶
User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :omniauthable
has_one :profile
after_create :build_profile
def build_profile
self.create_profile
end
def self.create_with_omniauth(auth)
user = first_or_create do |user|
user.provider = auth['provider']
user.uid = auth['uid']
user.email = auth['info']['email']
user.password = Devise.friendly_token[0,20]
end
end
end
的routes.rb
devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
callbacks_controller.rb
class CallbacksController < Devise::OmniauthCallbacksController
def github
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
我也跑了正確的遷移增加供應商和UID列到用戶表
rails g migration AddColumnsToUsers provider uid
def change
add_column :users, :provider, :string
add_column :users, :uid, :string
end
配置/初始化/ devise.rb
config.omniauth :github, 'CLIENT_ID', 'APP_SECRET', :scope => 'user:email'
當我創建使用devise
這一切工作正常並且用戶已經創建,但是當我點擊我的註冊頁面在GitHub上登錄,它把在設計一個用戶帳戶和github帳戶一起留給我一個帳戶,它不會創建一個帳戶與用戶github憑據。即使我嘗試使用2個不同的github帳戶登錄,它仍然由於某種原因只使用第一個github帳戶。
問題是github用戶可以登錄,但他們沒有被創建爲用戶,使用他們的github憑據,我需要用戶登錄並創建一個配置文件與我。