【问题标题】:How do I retain GitHub OAuth scopes persistently between visits?如何在访问之间持续保留 GitHub OAuth 范围?
【发布时间】:2016-01-26 11:34:11
【问题描述】:

我在 GitHub 上有一个开发者应用程序。当新用户登录我的站点时,我请求“admin:repo_hook”范围。他们面对 GitHub 授权屏幕,他们点击“接受”,然后他们被引导回我现在登录的网站。

用户 ID 以及用户授予的任何范围的详细信息都存储在我的数据库中。

当他们开始使用我的网站时,我会在必要时要求提供其他范围,例如'repo_deployment'。为了防止已经授予的权限被撤销,我将所有当前范围(从数据库中提取)与新范围请求一起传递,即“范围=repo_deployment,admin:repo_hook”。用户再次面临 GitHub 授权屏幕,他们授予 repo 部署权限,然后他们被引导回我的站点。

当用户退出我的网站,然后尝试重新登录时,会出现我的问题。登录时,我不知道这是新用户还是现有用户。

如果我只传递 'admin:repo_hook' 作为所需范围,那么 GitHub 认为我现在想要撤销 'repo_deployment' 范围。但是我无法查询数据库以查看已授予哪些范围,因为不使用 OAuth 我不知道用户的 ID。

我很乐意使用 OAuth,因为我不能传递任何范围,这意味着 GitHub 不会为我的应用程序的现有用户请求或撤销任何范围,这很好。但是用户会看到请求“公共信息”范围的授权屏幕 - 并且,在确定用户是没有授予范围的新用户后,我必须将他们发送到 second 授权屏幕询问“admin:repo_hook”范围!

是否有一个持久的范围跟踪解决方案,让我可以向新用户询问特定范围,同时保留现有用户的范围,同时不会向用户显示不必要的授权屏幕?

【问题讨论】:

    标签: github oauth scope github-api


    【解决方案1】:

    我认为这是不可能的(说几个小时的个人实验)。

    很高兴有人提供答案(如果有的话),但现在我已经妥协了,只需要多个范围界定请求。

    【讨论】:

      猜你喜欢
      • 2011-05-24
      • 2019-09-25
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-28
      相关资源
      最近更新 更多