如何在访问之间持续保留GitHub OAuth范围?

时间:2016-01-26 11:34:12

标签: github oauth scope github-api

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

如果有人提供答案,我很高兴,但是现在我已经妥协,只需要多个范围请求。