2013-06-29 50 views
1

我需要在Facebook登錄問不同的權限:django-social-auth:我怎樣才能實現更多的提供者?

  • publish_stream電子郵件標準用戶
  • publish_stream電子郵件manage_pages爲 「admin」 的用戶

Here,圖書館的作者告訴我必須定義一個新的後端/提供者。但我該怎麼做?

我不明白我該怎麼做。有人可以向我解釋我要做的一步一步嗎?

+0

你怎麼知道他們是否是管理員,如果他們沒有登錄? – Thomas

+0

如果有任何用戶登錄,這是一個「管理員」用戶。然後我想按照前面所述將他的facebbok賬戶關聯起來 – panizza

回答

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

它不起作用!我必須在FacebookAuthForAdmins類之後添加'BACKENDS ='Facebook-page':FacebookAppAuth,如果USE_APP_AUTH else FacebookPagesAuth, } – panizza