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