2011-12-04 61 views
0

我可以得到參數微博電子郵件使用devise :omniauthableGettitng微博電子郵件與設計omionaluthable

我能得到Facebook的電子郵件,並用這種方法創建用戶:

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil) 
    data = access_token['extra']['user_hash'] 
    if user = User.find_by_email(data["email"]) 
    user 
    else # Create a user with a stub password. 
    User.create!(:email => data["email"], :password => Devise.friendly_token[0,20]) 
    end 
end 

控制器:

class OmniauthCallbacksController < Devise::OmniauthCallbacksController 

    def facebook 
    @user = User.find_for_facebook_oauth(env["omniauth.auth"], current_user) 
    if @user.persisted? 
     flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Facebook" 
     sign_in_and_redirect @user, :event => :authentication 
    else 
     session["devise.facebook_data"] = env["omniauth.auth"] 
     redirect_to new_user_registration_url 
    end 
    end 

    def twitter 
    @user = User.find_for_twitter_oauth(env['omniauth.auth']) 

    if @user.persisted? 
     flash[:notice] = I18n.t 'devise.omniauth_callbacks.success', :kind => 'Twitter' 
     sign_in_and_redirect @user, :event => :authentication 
    else 
     flash[:notice] = I18n.t 'devise.omniauth_callbacks.failure', :kind => 'Twitter', :reason => 'User not found' 
     redirect_to new_user_session_path 
    end 
    end 
end 

,如果我用這樣的東西在進入PARAMS我得到user_iduid嘰嘰喳喳OAuth的, credentials,secret等,但沒有電子郵件。我能用這種方式得到它嗎?我不想爲用戶表添加新字段,也不想爲用戶ID,oauth prowiders和oauth ID添加新表。

Mb更清潔的方式存在與warden戰略twitter

回答

2

Twitter API 不是回覆電子郵件,所以它由您決定如何處理