Django Facebook认证

django-facebook2的Python项目详细描述


Django网站的Facebook集成
======



要求
----



jquery的一些最新版本。待办事项:记录需要的地方,并举例说明使用Facebook登录有两种登录方式:
(http://developers.facebook.com/docs/authentication/):

-通过服务器端流
-通过客户端流

服务器端发出的请求的数量,您希望两边都经过身份验证。不幸的是,facebook于2011年12月31日弃用了他们的cookie(http://developers.facebook.com/blog/post/624/)。为了克服这个问题,我们发出了一个ajax post请求,
只要有人登录到客户端,就通知服务器并给
一个登录的更改。

设置:

facebook_app_id='
facebook_app_secret='
facebook_redirect_uri='

软件和设置:
facebook_debug_token='
facebook_debug_uid='
facebook_debug_cookie='
facebook_debug_signedreq='



模板
----


可以通过将其添加到基本模板中来启用一些使用javascript sdk的帮助程序e在使用facebook的其他javascript之前:

{%load facebook%}
{%facebook初始%}
{%block facebook代码%}{%endblock%}
{%endfacebook%}



"facebook加载"模板标记插入异步加载facebook javascript sdk所需的代码。"facebook"init`
标记使用配置的应用程序设置调用"fb.init"。最好将与facebook相关的javascript放入"facebook代码"区域,以便异步处理程序可以调用它。

逗号分隔列表。

<;fb:登录按钮show faces="false"width="200"max rows="1"
perms="{%facebook_perms%}">;





此模块还提供了在后台使用Facebook所需的所有工具:




``如果facebook cookie存在,则登录用户。作为计数器部分,有一个"facebooklogoutmiddleware",当cookie不再存在时,它会将用户注销。要使这两个中间软件工作,您需要将"django_facebook.auth.facebookmodelbackend"添加到您的"authentication_backends"设置中。

作为助手,有一个"facebookhelpermiddleware",它根据请求设置一个"facebook"对象,包含:

-`"用户id"``:如果用户已登录,这将是facebook用户id
-``access``:一个惰性的访问令牌
-``auth``:facebook.auth`的一个实例,一个用来进行
身份验证的对象,例如获取一个新的ccess_token
-``graph``:一个``facebook.graphapi```的实例。

``facebook middleware``作为一个快捷方式激活上述三个中间件,并
实现向后兼容。安装后,您可以执行以下操作:

def friends(request):if request.facebook.user\u id:friends=
request.facebook.graph.get\u connections('me','friends')


若要使用中间件,只需将其添加到中间件类:

'django\u facebook.middleware.facebook middleware'

调试:

用户id和access_token来
强制Facebook图形可用性。

``facebookDebugCanvasMiddleware``允许您设置签名的_请求来模拟
作为Facebook内部画布加载的页。




authentication
——

在django用户系统中,

djang_facebook定义了一个"认证"用户的后端。真正的
身份验证当然是通过facebook api完成的,因此这个后端
只确保用户存在于我们的数据库中。如果用户不存在,将创建该用户,并触发[django_facebook.auth.facebook_user_created](signals)
信号。连接到此信号以填充
示例的配置文件数据。


``@facebook\u required``是一个decorator,它确保用户当前使用facebook登录,并可以访问facebook图表。如果不使用facebook身份验证后端,则可以用
替换"login\u required"。

"canvas\u only"是一个修饰程序,用于确保通过facebook canvas加载有效的"signed\u request"。如果找不到签名的请求,
装饰器将返回一个http 400。如果找到已签名的_请求,但用户尚未得到
授权,则装饰器将重定向用户进行授权。


``utils.facebookRequiredMixin``是一个基于类的视图mixin,使用CBV时可以使用它。它需要在任何其他元类之前出现,否则将不会工作。例如:

class myview(facebookRequiredMixin,django.views.generic.detailview):
其余视图…



signals
----

django-facebook定义一个信号:
``django-facebook.auth.facebook-user-created````。当
FacebookModelBackend创建一个用户时,它会被激发,并被传递给'user`,它是刚刚创建的用户,而'facebook``是可以用来
与Facebook交互的Facebook帮助程序对象(需要为此安装'FacebookhelperMiddleware`),否则'fac电子书``Kwarg将是``none``).


Asynchronous
----


建议使用请求来处理与外部API异步的连接,这样,如果Facebook比平时花费更多的时间,您的用户就不需要等待。这个应用程序是基于这个想法构建的,只有在必要时
才能打电话给Facebook。这意味着当存在facebook cookie
时,默认情况下不会调用facebook来验证cookie并
获取访问令牌。

facebook helper对象上设置的"访问令牌"是一个"惰性"访问令牌。
这意味着仅获取或在最后
时刻验证。当访问令牌过期时,如果
可能,将获得一个新的访问令牌。

访问令牌存储在用户会话中,因此需要安装Django的SessionMiddleware


————

这个应用程序最初是由Aidan Lister的http://github.com/pythonfacebook/django-facebook派生的,并且变化很大。因此,我决定将其作为一个新的应用程序(在相同的许可下)发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
IntelliJ中的java默认Maven项目结构不一致   java我希望链接(在帖子和页面上)在一些访问者加载时被自动点击   java如何使用单独的方法隐藏JButton并在新类中调用   java KStream leftJoin KStream具有相同的密钥   java图像在垂直滚动窗格视图端口中消失   java从指定的起始点开始以n的增量填充数组   java JLabel和JTextField不在swing表单中应用   java springboot mongo如果没有映像,请使用现有映像   类似C++映射的java容器   java如何在没有Valgrind错误的情况下调用JNI_CreateJavaVM?   java如何在安卓中运行后台服务   java onPostExecute不运行