如何在不同时间从Facebook请求不同的权限?

汤姆米利斯

Facebook建议使用Facebook登录名时,首先应要求用户提供尽可能少的权限,尤其要避免在用户需要通过您的网站发布内容之前请求发布权限-https: //developers.facebook.com/docs/ facebook-login / permissions /#optimizing

我们一直在尝试使用python-social-auth的django应用程序实现此功能,但似乎无法在网站的不同位置请求不同的权限-范围是通过SOCIAL_AUTH_FACEBOOK_SCOPE设置设置的,因此无法提出要求以后再使用其他范围(例如,publish_actions从中排除SOCIAL_AUTH_FACEBOOK_SCOPE,然后在用户尝试从您的网站发布到Facebook时要求用户提供该权限)。

有谁知道这在python-social-auth应用中是否可行,如果可以,怎么办?

拥有

(以下文本摘自http://psa.matiasaguirre.net/docs/use_cases.html#multiple-scopes-per-provider上的文档

目前python-social-auth还没有提供为单个后端定义多个范围的方法,这通常是理想的,因为建议您向用户询问最小范围,并在真正需要时增加访问量。可以添加一个扩展原始后端的新后端来完成该行为,有两种方法可以实现。

覆盖get_scope()方法

from social.backends.facebook import FacebookOAuth2


class CustomFacebookOAuth2(FacebookOauth2):
    def get_scope(self):
        scope = super(CustomFacebookOAuth2, self).get_scope()
        if self.data.get('extrascope'):
            scope += [('foo', 'bar')]
        return scope

此方法非常简单,它覆盖了在后端(get_scope()中返回范围值的方法,并且如果由GETPOSTdata(self.data)中的参数指示,则在列表中添加额外的值

将这个新的后端,在你的项目的一些地方,替换原来FacebookOAuth2AUTHENTICATION_BACKENDS这个新版本。

定义后端以处理范围

可以通过定义第二个后端来执行相同的操作,该后端从原始对象扩展但覆盖名称,这将暗示新的URL以及新后端的新设置(因为该名称用于构建设置名称),这也意味着提供程序中提供了一个新的应用程序,因为并非所有提供程序都为您提供了定义多个重定向URL的选项。为此,只需添加一个后端,例如:

from social.backends.facebook import FacebookOAuth2


class CustomFacebookOAuth2(FacebookOauth2):
    name = 'facebook-custom'

将此新后端放置在项目中的某个位置,将原始后端保留FacebookOAuth2AUTHENTICATION_BACKENDS现在,一组新的URL将起作用:

/login/facebook-custom
/complete/facebook-custom
/disconnect/facebook-custom

还有一组新的设置:

SOCIAL_AUTH_FACEBOOK_CUSTOM_KEY = '...'
SOCIAL_AUTH_FACEBOOK_CUSTOM_SECRET = '...'
SOCIAL_AUTH_FACEBOOK_CUSTOM_SCOPE = [...]

当需要额外的权限时,只需将用户重定向到/login/facebook-custom,然后user.social_auth.get(provider='facebook-custom')使用此新后端获取社交身份验证条目access_token在其中使用即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何在不同时间向Facebook请求不同的权限?

来自分类Dev

加特林脚本-如何在不同时间的以下请求中提供eventdatetime

来自分类Dev

在不同时间导入

来自分类Dev

如何在一次表扫描中组合不同时间范围的多个查询

来自分类Dev

如何在不同时间范围内计算RMSE

来自分类Dev

如何在不同时间显示来自Javascript数组的部分文本?

来自分类Dev

如何在一天中的不同时间添加多个通知

来自分类Dev

如何在Flutter中的不同时间在Sqlite数据库中创建多个表

来自分类Dev

如何在一个查询中获得不同时间段的总和

来自分类Dev

如何在不同时间显示特定日期的多个通知

来自分类Dev

如何在不同时间在同一列上存储 2 条记录?

来自分类Dev

如何使用jQuery在不同时间淡化图像

来自分类Dev

$ http代码在不同时间触发,如何依次触发

来自分类Dev

如何在不同时间用相同的sha1sum重新创建PHAR文件?

来自分类Dev

如何在一周中的特定日期的不同时间快速实施多个本地通知

来自分类Dev

PHP查询:如何在不同时间将数据输入到同一表的2列中

来自分类Dev

如何安排作业在不同时间为不同用户运行

来自分类Dev

如何使用 Tkinter 在 python 中的不同时间显示不同的单选按钮组?

来自分类Dev

如何使用同一个 UIButton 在不同时间执行多个不同的动画?

来自分类Dev

将相同时间转换为不同时区

来自分类Dev

如何提取两个不同时间值之间的营业时间

来自分类Dev

不同时间之间的日期时间逻辑

来自分类Dev

如何在一个 HTML 页面上使用不同元素在不同时间调用两个函数?

来自分类Dev

如何做两个不同时间的总和

来自分类Dev

如何处理在不同时间到达的用户数据的多个推送通知?

来自分类Dev

如何比较带有不同时间戳的Matlab中的.mat文件

来自分类Dev

如何减去对应于python中不同时间间隔的pandas列?

来自分类Dev

如何将不同时间点的音符并入和弦?

来自分类Dev

Google折线图:如何比较不同时间段的值?

Related 相关文章

  1. 1

    我如何在不同时间向Facebook请求不同的权限?

  2. 2

    加特林脚本-如何在不同时间的以下请求中提供eventdatetime

  3. 3

    在不同时间导入

  4. 4

    如何在一次表扫描中组合不同时间范围的多个查询

  5. 5

    如何在不同时间范围内计算RMSE

  6. 6

    如何在不同时间显示来自Javascript数组的部分文本?

  7. 7

    如何在一天中的不同时间添加多个通知

  8. 8

    如何在Flutter中的不同时间在Sqlite数据库中创建多个表

  9. 9

    如何在一个查询中获得不同时间段的总和

  10. 10

    如何在不同时间显示特定日期的多个通知

  11. 11

    如何在不同时间在同一列上存储 2 条记录?

  12. 12

    如何使用jQuery在不同时间淡化图像

  13. 13

    $ http代码在不同时间触发,如何依次触发

  14. 14

    如何在不同时间用相同的sha1sum重新创建PHAR文件?

  15. 15

    如何在一周中的特定日期的不同时间快速实施多个本地通知

  16. 16

    PHP查询:如何在不同时间将数据输入到同一表的2列中

  17. 17

    如何安排作业在不同时间为不同用户运行

  18. 18

    如何使用 Tkinter 在 python 中的不同时间显示不同的单选按钮组?

  19. 19

    如何使用同一个 UIButton 在不同时间执行多个不同的动画?

  20. 20

    将相同时间转换为不同时区

  21. 21

    如何提取两个不同时间值之间的营业时间

  22. 22

    不同时间之间的日期时间逻辑

  23. 23

    如何在一个 HTML 页面上使用不同元素在不同时间调用两个函数?

  24. 24

    如何做两个不同时间的总和

  25. 25

    如何处理在不同时间到达的用户数据的多个推送通知?

  26. 26

    如何比较带有不同时间戳的Matlab中的.mat文件

  27. 27

    如何减去对应于python中不同时间间隔的pandas列?

  28. 28

    如何将不同时间点的音符并入和弦?

  29. 29

    Google折线图:如何比较不同时间段的值?

热门标签

归档