【问题标题】:django-social-auth: How can I implement more provider?django-social-auth:如何实现更多提供者?
【发布时间】:2013-06-29 15:02:38
【问题描述】:

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

  • publish_stream电子邮件 标准用户
  • publish_streamemailsma​​nage_pages 供“管理员”用户使用

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

我不明白我该怎么做。有人可以逐步解释我要做什么吗?

【问题讨论】:

  • 如果他们没有登录,你怎么知道他们是否是管理员?
  • 如果有任何用户登录,这是一个“管理员”用户。然后我想按照之前的描述关联他的facebook账号

标签: django django-socialauth


【解决方案1】:

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

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',
    ...
)

【讨论】:

  • 不行!我必须在 FacebookAuthForAdmins 类之后添加BACKENDS = { 'facebook-page': FacebookAppAuth if USE_APP_AUTH else FacebookPagesAuth, }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
相关资源
最近更新 更多