我正在编写一个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或类似的东西干净地创建所有模型的方法。
更新 在discussion上有一些GitHub涉及此问题。基本上,还没有内置功能。我打算制定一个只处理Facebook的自定义解决方案(因为这就是我在我的应用程序中使用的所有内容)。如果有效,我会发布我之后在这里做的。
答案 0 :(得分:1)
快速了解django-allauth表明他们正在使用SocialAccount模型来保存特定身份验证方法和社交帐户类型的数据。
您需要基于SocialAccount模型创建API端点。您需要传递变量,如:帐户类型(Facebook,本地,推特等),社交身份验证提供程序所需的其他身份验证变量。然后,在您的代码中,您可以创建SocialAccount模型实例,使用从API端点调用接收的数据进行提要,并通过django-allauth触发相应的auth调用。最后你应该返回你的auth电话的结果。
我没有看到将django-allauth用于本地/ facebook auth的一个重要原因,通过一些小小的努力,你可以拥有全系列的社交认证提供商。
答案 1 :(得分:0)
我使用requests
库来处理facebook API并且效果很好,我认为Django的社交登录插件不适用于其他人,但作者,如果你想认真做一些事情。
PS。我使用django-rest-framework为移动应用程序构建了休息后端,还包括本地帐户登录和社交网站登录。