我已决定尝试像GitHub Actions一样在GitHub上管理我的一个应用程序的发行版,我可以在Mac,Linux和Windows上进行构建,并自动将工件推送到GitHub Releases页面,任何人都可以在其中下载该应用程序来自。
但是,我希望我的应用程序能够自我更新,因此,应用程序本身还需要能够查询回购版本中的最新版本,然后下载用户操作系统的相关资产...我认为这样是非发行...但是,如果没有OAuth应用或个人访问令牌,就无法访问GitHub API v4。
我不想要OAuth应用,因为绝对不希望我的应用的用户是GitHub客户。因此,我尝试使用个人访问令牌,该令牌的唯一范围是对公共发行资产的访问(同样,这是任何人都可以手动下载的公共资源)。
由于即使没有GitHub帐户,此令牌也无法做您或其他任何人无法做的事,我认为将令牌放入应用程序的源代码中会很好,但是GitHub在以下情况下撤消该令牌:它在提交时检测到它。
是否有解决此问题的好方法?我应该将令牌放在GitHub机密中,然后尝试在编译期间用它替换占位符吗?我想避免这种情况,因为这使我很难在本地测试该应用程序,而且它也无法解决任何问题,因为任何人都可以轻松地反编译该应用程序并在其中找到令牌(假设GitHub无法检测到其中存在的秘密)编译期间的“已处理”源)。
任何建议将不胜感激。
但是,如果没有OAuth应用或个人访问令牌,就无法访问GitHub API v4。
GitHub API v3确实支持未经身份验证的调用,但每个IP地址每小时最多只能请求60个请求:https://developer.github.com/v3/#rate-limiting
Latest Release API文档将向您显示返回了什么信息,但是我怀疑您需要对List Assets for a release进行二次调用才能知道客户端需要下载的文件。对于未经身份验证的请求,速率限制允许每小时最多60个请求。未经身份验证的请求与原始IP地址相关联,而不与发出请求的用户相关联。
如果这不令人满意(例如,您知道您将有许多客户端尝试使用相同的IP地址进行更新),并且您想确保它们不受速率的限制,请继续阅读不同的方法。] >
是否有解决此问题的好方法?我将通过部署小型Web服务(例如Heroku dyno)来解决此问题,您的应用无需身份验证即可调用该服务,然后该服务将对最新版本进行实际查找(使用嵌入为环境变量的PAT ),并返回客户端可以理解的简单JSON响应。
好处:
/latest/beta
或/latest/stable
表示它正在寻找特定频道