我正在构建一个应允许用户使用 Facebook 注册/登录的应用程序,然后他应该能够登录(始终通过 Facebook)到“主”网站
老实说,它比这复杂一点。那是因为我正在使用 django-tastypie和 django-allauth在主网站上允许注册、登录和浏览我们的API
基本上,我想让移动应用程序用户浏览 tastypie API(只有登录后才能访问,如果您是主网站的用户)并授予他添加行(如订单)的权利
这是我的
- 具有 Facebook 登录功能的 phonegap 应用程序(我正在努力)
- 一个带有 django-allauth 和 django-tastypie 的网站,让我可以使用 allauth 的 Facebook 登录名注册为新用户
- 如果移动用户通过 Facebook 注册(这就是问题所在),则在主网站上没有踪迹
我基本上对如何使用访问 token 以及如何传递更多参数感到困惑(我不仅需要 Facebook 信息来完成注册,还需要一些自定义字段)
有人对此有经验或想公开他的工作流程吗?
最佳答案
一种常见的做事方式是将所有与注册相关的功能留给网站。在您的 phonegap 应用程序中,您可以使用应用程序内浏览器 (IAB) 简单地将用户指向/accounts/login/。 IAB 有您应该监控的事件,例如 loadstart
和 exit
。监视用户是否成功登录的一种简单方法是在登录结束时将他重定向到特定的 url,比如/accounts/login/complete/。如果您将 token 附加到该返回 url(如/accounts/login/complete/?token=123),您将能够在您的应用程序中解析该 token 。您可以简单地使用 session ID 作为 token 。
一种更安全的方法是使用 django-oauth2-provider 应用程序并实际实现适当的 oauth 握手。处理几乎相同。使用 IAB 打开/oauth/authenticate/,您将被要求使用 allauth 登录,然后出现 oauth2 确认对话框,之后 oauth 授权代码被传递到成功 URL。您可以从 phonegap 中获取该代码,并在 phonegap 应用程序中使用 AJAX 调用,您可以获取 oauth 访问 token 。顺便说一句,django-rest-framework 内置了对 django-oauth2-provider 的支持(不知道 tastypie)。
一种完全不同的方法是在您的移动应用程序中实现 Facebook 登录,完全独立于网站。登录后,您将获得一个 Facebook 访问 token 。现在,您可以将此 token 发送到网站。给定 token ,网站可以获取用户(https://graph.facebook.com/me?access_token=..),检查该用户是否已知,如果已知,则为该用户返回适当的 token / session ,如果不是,则创建用户帐户并返回一个 token 。
关于django - 使用 django allauth 连接 facebook phonegap 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16834514/