解决Gitalk的[GitHub API]Deprecation notice for authentication via URL query parameters参数验证问题
解决办法
- 更新
Gitalk
依赖至v1.5.2
,(确保你的gitalk版本在v1.5.2
以上)
问题
如果没猜错的话,博客集成了Gitalk的用户这两天被Github官方邮件轰炸了,邮件标题统一是[GitHub API]Deprecation notice for authentication via URL query parameters
,大概看了下,在获取用户repo
下的issue
的时候,直接使用clientID
和clientSecret
作为查询字符串进行授权验证,这种验证方式在2020年7月1日被舍弃。
查询该项目下的issue
,已经有人提了这个问题,说出了原因:在Github Developer
的Deprecated APIs and authentication文中写道,官方为了保证授权的安全性,舍弃部分API和验证方式,其中包括舍弃采用查询参数验证,下面是官方原话
Authenticating using query parameters
GitHub is deprecating authentication to the GitHub API using query parameters, such as using a access_token query parameter for OAuth user authentication or a client_id/client_secret query parameter for OAuth application authentication. All authentication to the GitHub API should be done using HTTP basic authentication.
应该是Gitalk的作者没有及时更改OAuth
的验证方式,导致用户收到Github官方的邮件“轰炸“。
解决
在issue#343下,@geektutu的#344是使用官方的Personal Access Token
(以下简称PAT)替代现在的查询验证,问题是token具有限制,如每小时60次,还需要担心滥用的情况,当然对于大部分人是够用了。
@fletchto99给出了最终的
解决方案,#346中,他将clientID
和clientSecret
放在Header
中的auth
中,完美地解决了这个问题
Hexo博客NexT主题解决办法
在我写下博客的时间,Gitalk的官方已经更新到v1.5.2,更新你的依赖确保你的版本在1.5.2以上(在网页中Gitalk右上角点击即可查看)。
若采用npm安装方式,可直接npm install
更新依赖。
在我使用的NexT
主题中,默认的Gitalk的配置在theme/next/_config.yml
即可启用,关于替换Gitalk源文件url的部分配置在_config.yml的vendors区块中,代码如下
vendors:
# Gitalk
# gitalk_js: //cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js
# gitalk_css: //cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css
# 修改gitalk文件url如下
gitalk_js: //cdnjs.cloudflare.com/ajax/libs/gitalk/1.5.2/gitalk.min.js
gitalk_css: //cdnjs.cloudflare.com/ajax/libs/gitalk/1.5.2/gitalk.min.css
可以看到默认使用cdn.jsdelivr.net
的cdn
,但在我这里可能由于服务器缓存问题,即使我直接访问网页显示的版本是v1.5.2
,实际部署后显示版本仍为v1.5.1
,只可手动指定为v1.5.2
的版本,deploy
后在网页中查看Gitalk
版本在v1.5.2
即可
其他主题请自行搜索解决办法