我正在构建一个应该允许用户使用 Facebook 注册/登录的应用,然后他应该能够登录(始终通过 Facebook )到“主要”网站
说实话,它比这复杂一点。那是因为我在主网站上使用django-tastypie和django-allauth来允许注册,登录和浏览我们的 API
基本上我想让移动应用程序用户浏览tastypie API(仅在登录时可访问,如果您是主网站中的用户)并授予他添加行的权限(如订单)
这就是我所拥有的
我基本上很困惑我应该如何使用访问令牌以及如何传递更多参数(我不需要Facebook信息来完成注册,但也有一些自定义字段)
任何人都有这方面的经验或希望揭露他的工作流程?
答案 0 :(得分:14)
一种常见的做法是将所有与注册相关的功能保留在网站上。在您的phonegap应用程序中,您只需使用应用内浏览器(IAB)将用户指向/ accounts / login /即可。 IAB包含您应监控的loadstart
和exit
等事件。监视用户是否成功登录的一种简单方法是在登录结束时将其重定向到特定URL,例如/ accounts / login / complete /。如果您将令牌附加到该返回URL(如在/ accounts / login / complete /?token = 123中),您将能够在您的应用中解析该令牌。您只需将会话ID用作令牌即可。
更安全的方法是使用django-oauth2-provider应用程序并实际执行正确的oauth握手。处理几乎是一样的。使用IAB open / oauth / authenticate /,将要求您使用allauth登录,然后会出现oauth2确认对话框,然后将oauth授权代码传递给成功URL。您可以从phonegap中选择该代码,并使用来自phonegap应用程序的AJAX调用来获取oauth访问令牌。顺便说一句,django-rest-framework内置了对django-oauth2-provider的支持(不知道tastypie)。
完全不同的方法是在您的移动应用中实施Facebook登录,完全独立于网站。登录后,您将被移交Facebook访问令牌。现在,您可以将此令牌发送到网站。给定令牌,网站可以获取用户(https://graph.facebook.com/me?access_token=..。),检查该用户是否已知,如果是,则为该用户返回适当的令牌/会话,如果没有,则创建用户帐户,返回一个令牌。