簡體   English   中英

將django-allauth與tastypie一起使用的正確方法是什么?

[英]What is the right way to use django-allauth with tastypie?

我正在編寫一個Django應用程序,它使用django-allauth進行Facebook集成,並使用django-tastypie作為iOS應用程序的后端。 iOS應用程序將使用原生Facebook iOS SDK。 除了網站之外,我還希望能夠從iOS應用程序中注冊並驗證Facebook和非Facebook用戶。

問題是django-allauth似乎沒有可以從外部訪問的API。 插入allauth功能的唯一簡潔方法似乎是通過Django模板標簽。 有沒有辦法可以公開這個功能與tastypie一起使用?

Django-allauth都是開源的,所以我試圖解析代碼。 我最初的想法是使用本機Facebook SDK對iOS端的用戶進行身份驗證,然后手動填寫SocialAccount,SocialToken的信息,並將SocialAccount添加到SocialApp(這些都是django-allauth模型)。 然而,這似乎是一個非常糟糕的解決方案。 我喜歡通過Facebook ID或類似方式干凈地創建所有模型的方法。

更新:GitHub上有一些關於這個問題的討論 基本上,還沒有內置功能。 我打算制定一個只處理Facebook的自定義解決方案(因為這就是我在我的應用程序中使用的所有內容)。 如果有效,我會發布我之后在這里做的。

快速瀏覽django-allauth表明他們正在使用SocialAccount模型來保存特定身份驗證方法和社交帳戶類型的數據。

您需要基於SocialAccount模型創建API端點。 您需要傳遞變量,如:帳戶類型(Facebook,本地,推特等),社交身份驗證提供程序所需的其他身份驗證變量。 然后,在您的代碼中,您可以創建SocialAccount模型實例,使用從API端點調用接收的數據進行提要,並通過django-allauth觸發相應的auth調用。 最后你應該返回你的auth調用的結果。

我沒有看到將django-allauth用於本地/ facebook auth的一個重要原因,通過一些小小的努力,你可以擁有全系列的社交認證提供商。

我使用requests庫來處理facebook API並且它工作得很好,我認為Django的社交登錄插件不適用於其他人,但作者,如果你想認真做一些事情。

PS。 我使用django-rest-framework為移動應用程序構建了休息后端,還包括本地帳戶登錄和社交網站登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM