2012-10-17 36 views
0

我正在嘗試使用django-social-auth來允許我的用戶使用Facebook登錄到網站。我想保存用戶的姓名和電子郵件地址。但是,使用文檔中的設置,它將保存用戶名,電子郵件和身份驗證令牌,但由於某些原因,它不保存名字和姓氏。 查看代碼,FacebookBackend類提供了函數get_user_details,但我不確定如何使用它。 似乎應該有一個簡單的方法來獲得這些信息。如果不是,總是有option to add an additional pipeline在django-social-auth中使用get_user_details

回答

1

第一個和最後一個名字已被缺省管道檢索到。 Facebook後端調用get_user_details(第47行),它設置姓氏和名字。

默認管道甚至通過在每次成功登錄時再次調用方法來更新這些詳細信息。

'social_auth.backends.pipeline.user.update_user_details' 

因此,無論您的Facebook用戶沒有姓氏和名字集,或者您的設置可能是錯誤的,你運行的版本:這種行爲可以通過編寫自己的管道不包括被關閉?

+0

我使用的是0.7.5版本。與social-auth相關的設置是:'SOCIAL_AUTH_EXPIRATION ='expires''和'AUTHENTICATION_BACKENDS =('social_auth.backends.facebook.FacebookBackend',)' – Devang

+0

其實我認爲這個問題可能與'create_user'函數有關。雖然上層確實獲得姓和名,但用戶只能使用用戶名和電子郵件創建 - [_ user':UserSocialAuth.create_user(username = username,email = email),_](https://github.com/omab /django-social-auth/blob/v0.7.7/social_auth/backends/pipeline/user.py#L49) – Devang

+0

我想我知道了,它可以通過使用SOCIAL_AUTH_PROTECTED_USER_FIELD來完成,正如在文檔中提到的那樣,然後使用用戶。 Devang