我在Django应用程序中使用django-allauth。
每个用户都可以选择将自己的Facebook帐户连接到现有帐户。 通过添加allauth的连接过程,我能够做到这一点。
<a href='{% provider_login_url "facebook" process="connect" %}'>
Connect with Facebook
</a>
此时,我不想要求允许发布到用户的墙上。
#settings.py
SOCIALACCOUNT_PROVIDERS = {
'facebook': {
'SCOPE': ['email'],
'METHOD': 'js_sdk'
}
}
一切顺利,用户可以连接Facebook帐户。
但是,有没有办法要求获得分别在用户墙上发布的许可?我不想要求上面的publish_actions权限。
如何使用django-allauth执行此操作?
如何单独申请publish_actions权限?这可以用django-allauth完成吗?因为我猜这需要在settings.py中为'facebook'SOAPACCOUNT_PROVIDERS重新声明'SCOPE'。
提前致谢
答案 0 :(得分:3)
我终于解决了它。事实证明,django allauth将设置保存为DOM元素#allauth-facebook-settings 中的JSON。你只需要修改这个json并传递给allauth facebook init函数。当用户单击以启用需要“publish_actions”权限的功能时,我会调用Javascript函数:
function modify_permissions() {
var json = JSON.parse($("#allauth-facebook-settings").html());
json["loginOptions"]["scope"] = "email, publish_actions";
allauth.facebook.init(json);
}
现在,如果您尝试从该页面连接FB帐户,django allauth也会要求'publish_actions'权限。
答案 1 :(得分:0)
在django allauth http://django-allauth.readthedocs.io/en/latest/providers.html#facebook提供的SOCIALACCOUNT_PROVIDER
设置中您需要更改以下部分以包含您需要的任何额外权限
SOCIALACCOUNT_PROVIDERS = {
'facebook': {
'SCOPE': ['email', 'public_profile', 'publish_actions'], # add your permissions here
'METHOD': 'js_sdk',
...
}
}