确定给定Github令牌的授权范围

时间:2012-10-17 03:57:55

标签: github github-api

我的应用使用Github's Oauth。 假设:

  • 在版本1中,应用程序仅需要基本授权(scopes = [])
  • 在版本2中,应用程序需要R / W访问公共存储库(scope = ['public_repo'])

自升级以来,部分用户尚未登录。

现在我有一些令牌具有更强的授权能力,而其他令牌。我如何区分它们? 换句话说,我怎么能问Github:“嘿,我有这个oauth令牌......我能用它做什么?”

2 个答案:

答案 0 :(得分:12)

您可以发出任何GitHub API请求并读取X-OAuth-Scopes标头的值,以查看令牌提供的范围。使用/ rate_limit不会计入您应用的速率限制。

curl -I -H 'Authorization: token <token>' https://api.github.com/rate_limit
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 18 Oct 2012 23:48:37 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Status: 200 OK
Content-Length: 61
X-GitHub-Media-Type: github.beta
X-RateLimit-Remaining: 4999
X-RateLimit-Limit: 5000
X-OAuth-Scopes: public_repo
Cache-Control: 
X-Content-Type-Options: nosniff

答案 1 :(得分:0)

(2014年2月):Enhanced OAuth security for SSH keys

  

我们刚刚添加了more granular permissions,因此third party applications可以专门请求对您的公共SSH密钥进行只读访问,读/写访问或完全管理访问。


请注意,access-token现在(2013年10月)也会返回范围。

详情请参阅“OAuth changes coming”(2013年10月,Tim Cleam - tclem):

  

从今天开始,我们将返回授予范围作为access_token响应的一部分   例如,如果您使用POST mime类型创建application/json,则会看到已授予范围的其他字段。

{
  "access_token":"e72e16c7e42f292c6912e7710c838347ae178b4a",
  "scope":"repo,gist",
  "token_type":"bearer"
  }
  

目前,这些范围与您的要求相同,但是我们正朝着一个功能集开始,该功能集将允许GitHub用户编辑其范围,从而有效地授予您的应用程序比原始请求更少的访问权限
  您应该意识到这种可能性并相应地调整您的应用程序行为。

需要注意的一些事项请记住:

  
      
  • 使用GitHub OAuth识别用户的大多数第三方应用程序都可以通过应用程序可能获得的最小访问权限开始获得最佳成功。
      像没有范围或只是user:email这样的东西是非常理智的。

  •   
  • 处理用户选择授予您的访问权限少于原始请求的错误情况非常重要。
      现在我们正在access_token响应上显示授权范围,应用程序可以警告或以其他方式与用户通信,他们将看到功能减少或无法执行某些操作。

  •   
  • 应用程序总是可以通过流程再次向用户发回以获得其他权限,但不要忘记用户总是可以拒绝。

  •