2013-10-25 85 views
2

我正在使用python-social-auth,並且我已成功地使用他的Facebook帳戶驗證用戶身份,但只保留電子郵件。我如何:保存更多信息Facebook認證用戶?

  1. 是否堅持生日?
  2. 添加並堅持不來自FB的信息,如他的寵物名稱? (據我所知,我將不得不使用管道,但不知道如何)

任何幫助將不勝感激。

提前致謝!

PS:有足夠聲譽的人會創建一個標籤'python-socialauth'嗎?

回答

2

出生日期持久性與定義SOCIAL_AUTH_FACEBOOK_EXTRA_DATA = [('birthdate', 'birthdate')]一樣簡單,稍後您可以通過執行user.social_auth.get(provider='facebook').extra_data['birthdate']來訪問它。

其他數據必須用管道保存,這並不簡單,但不難。管道是一個在auth過程中會被調用的函數(甚至在註冊,登錄或關聯時也是如此,因此函數需要檢查是否需要)。該函數會得到許多參數,如strategybackendsocialuserresponserequestsdetails,等等,這是最好的定義所需的參數,然後用**kwargs忽略其他。

一旦功能被編碼,它應該被添加到SOCIAL_AUTH_PIPELINE設置(一定要添加默認條目,否則認證過程將不起作用,這些可以在這裏找到http://psa.matiasaguirre.net/docs/pipeline.html#authentication-pipeline)。

+0

我應該將寵物名稱添加到extra_data字段,只要它是json格式的字段?它會導致我的問題與python-social-auth? – PedroBoi

+0

我不知道自己是否清楚,但是我說的是使用管道功能添加寵物名稱。得到它了? – PedroBoi

+2

你可以添加任何你想要的'extra_data',你也可以在管道函數的'details'中添加任何東西,並且在'_EXTRA_DATA'設置中定義名稱,它也會被存儲。 – omab