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

django social auth:如何实现更多的提供者?,django,django-socialauth,Django,Django Socialauth,我需要在facebook登录时请求不同的权限: 为标准用户发布\u流和电子邮件 为“管理员”用户发布流、电子邮件和管理页面 ,库的作者告诉我必须定义一个新的后端/提供程序。但是我怎么能做到呢 我不明白我怎么能那样做。有人能解释一下我要一步一步地做什么吗?像这样的后端应该可以完成这项工作: from social_auth.backends.facebook import FacebookAuth, FacebookBackend class FacebookBackendForAdmins

我需要在facebook登录时请求不同的权限:

  • 为标准用户发布\u流电子邮件
  • 为“管理员”用户发布流电子邮件管理页面
,库的作者告诉我必须定义一个新的后端/提供程序。但是我怎么能做到呢


我不明白我怎么能那样做。有人能解释一下我要一步一步地做什么吗?

像这样的后端应该可以完成这项工作:

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\u BACKENDS
设置中(假设您将该代码添加到
yourapp/facebook\u backend\u for\u admins.py
):


如果他们没有登录,你怎么知道他们是不是管理员?如果有用户登录,这就是“管理员”用户。然后我想关联他的facebbok帐户,如前所述,它不起作用!我必须在FacebookAuthForAdmins类之后添加
BACKENDS={'FacebookPage':FacebookAppAuth如果使用\u APP\u AUTH else FacebookPagesAuth,}
AUTHENTICATION_BACKENDS = (
    ...
    'yourapp.facebook_backend_for_admins.FacebookBackendForAdmins',
    ...
)