Django-Allauth Facebook整合 - 请求允许分别发布到用户墙

时间:2014-11-30 13:51:22

标签: python django facebook django-allauth

我在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'。

提前致谢

2 个答案:

答案 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', ... } }