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

How to see whether user approved requested permission in Python-Social-Auth

我正在使用 python-social-auth 让用户登录到我的 we 应用程序。创建用户帐户、登录等一切都按预期进行。

现在我也在请求用户的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 标注为额外参数,我看不到任何其他表明用户是否批准该权限的数据。我如何发现它?

您可以使用用户访问令牌提出 /me/permissions/ 请求,这将向您显示用户已授予您的应用程序哪些权限。

您还可以直接在 URL (see parameter return_scopes) 中直接将登录对话框 return 授予范围 – 无论是否可以轻松地将其添加到登录对话框中在你的框架内,我不知道。