django-social-auth:如何实现更多提供者?

时间:2013-06-29 15:02:38

标签: django django-socialauth

我需要在facebook登录时提出不同的许可:

    标准用户的
  • publish_stream 电子邮件
  • “li”用户
  • publish_stream 电子邮件 manage_pages

Here,图书馆的作者告诉我必须定义一个新的后端/提供者。但是我该怎么做呢?

我不明白我该怎么做。有人能解释一下我一步一步做什么吗?

1 个答案:

答案 0 :(得分:2)

像这样的后端应该做的工作:

from social_auth.backends.facebook import FacebookAuth, FacebookBackend

class FacebookBackendForAdmins(FacebookBackend):
    name = 'facebook-admins'

class FacebookAuthForAdmins(FacebookAuth):
    AUTH_BACKEND = FacebookBackendForAdmins
    SCOPE_VAR_NAME = 'FACEBOOK_ADMIN_EXTENDED_PERMISSIONS'

然后定义设置:

FACEBOOK_ADMIN_EXTENDED_PERMISSIONS = ['email', 'publish_stream', 'manage_pages']

不要忘记非管理员用户的设置:

FACEBOOK_EXTENDED_PERMISSIONS = ['email', 'publish_stream']

并将其添加到AUTHENTICATION_BACKENDS设置(假设您将该代码添加到yourapp/facebook_backend_for_admins.py):

AUTHENTICATION_BACKENDS = (
    ...
    'yourapp.facebook_backend_for_admins.FacebookBackendForAdmins',
    ...
)