如何在Python-Social-Auth中查看用户是否批准了所请求的权限

时间:2016-01-11 05:14:30

标签: python facebook python-social-auth

我正在使用python-social-auth将用户登录到我的应用程序。一切按预期工作,以创建用户帐户,登录等等。

现在我还要求用户publish_actions的许可。当我这样做时,我会在尝试登录时看到请求步骤,因此我知道Facebook正在被要求获得此权限。但是,我无法弄清楚如何从响应中发现用户是否批准了此权限。我想存储这个,以便我只根据用户的选择公开UI的正确部分以允许或拒绝许可。

以下是我如何申请许可:

SOCIAL_AUTH_FACEBOOK_SCOPE = [ 'email', 'publish_actions' ]

对于额外的参数,我有以下内容:

SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id,name,email',
}

我需要将email添加到列表中,以便将从FB返回的电子邮件值公开给我的身份验证管道。

如果我尝试将publish_actions添加到此字段,管道将中断并取消身份验证:

SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id,name,email,publish_actions', # <-- this causes a failure in auth pipeline
}

如果没有将publish_actions标记为额外的参数,我就看不到任何其他数据来指示用户是否批准了该权限。我怎么发现这个?

1 个答案:

答案 0 :(得分:0)

您可以使用用户访问令牌发出/me/permissions/请求,该令牌会显示用户授予您应用的权限。

您还可以使登录对话框直接在直接URL(see parameter return_scopes)中返回授予的范围 - 无论是否可以从框架内轻松添加到登录对话框,我不知道。