2011-09-08 21 views
1

Facebookユーザーの名前を保存しようとしていますが、そのユーザーを保存しようとしていません。私はguides on the devise githubに従っており、Facebookとの統合はうまくいきます。ユーザーの電子メールは期待どおりに保存されます。しかし、私はユーザー名を保存する方法を把握することはできません。今、私はこれを行う:omniauthとdeviseで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"], :name => data["name"], :password => Devise.friendly_token[0,20]) 
    end 
    end 

しかし、それは動作しません。私は何か間違っているのですか?

答えて

4

は、認証ハッシュスキーマが大きく変化したように思える:残念ながら https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil) 
    data = access_token.extra.raw_info 
    if user = User.where(:email => data.email).first 
    user 
    else 
    # Create a user with a stub password. 
    user = User.create!(:username => data.username ? data.username : data.nickname , :email => data.email, :password => Devise.friendly_token[0,20]) 
    end 
end 
+0

残念ながら、これはもう動作しません(2013年1月現在) – colllin

0

ユーザー名が保存されている:それはない何が必要である場合

auth = request.env['omniauth.auth'] #I think this is what your access_token variable equates to. 
auth['user_info']['name'] 

、私はあなたがaccess_tokenは内容を点検示唆しています。

+0

、ありません。要求はメソッド内からアクセスできません。[私はこのスタックオーバーフローポスト]で見つけました(http://stackoverflow.com/questions/3580557/rails-3-using-devise-how-to-allow-someone-to Facebookの文書を見ると、「名前」は「["余分な" [[名前]] [名前]の中にあるはずです。 "user_hash"] ' –

関連する問題