如何理解github的oauth最新规则,以修改对应typecho插件?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
如果大家给苏南大叔写过评论的话,就会知道:苏南大叔的博客文章底部有个github
的登陆按钮。点击这个按钮,就会调用github
提供的oauth
流程。这个流程的详细解释及相关源码,请参见文末链接。
最近,苏南大叔收到了一封来自github
的邮件。大意是:某个oauth
接口有了新的使用方式,建议尽快修改。这,究竟是怎么回事呢?那么苏南大叔的登陆代码,要如何修改呢?
一封邮件
苏南大叔收到的邮件内容大概如下:
On ## ##, ### at ##:## (UTC) your application (newsn.net oauth login) used an access token (with the User-Agent newsn.net oauth client) as part of a query parameter to access an endpoint through the GitHub API:
https://api.github.com/user
Please use the Authorization HTTP header instead as using the `access_token` query parameter is deprecated.
Depending on your API usage, we'll be sending you this email reminder on a monthly basis.
Visit https://developer.github.com/changes/2020-02-10-deprecating-auth-through-query-param for more information about suggested workarounds and removal dates.
Thanks,
The GitHub Team
大意就是/user
这个请求,传递access_token
的方式,从get
方式要换成header
的方式。比如:
curl "https://api.github.com/user/repos?access_token=my_access_token"
变成:
curl -H 'Authorization: token my_access_token' https://api.github.com/user/repos
官方的解释,请参见这个链接:
代码修改
因为苏南大叔发布过一份typecho
的github
登陆代码,所以,苏南是基于这份代码来看待本次的修改。当然,如果您是基于其他的框架代码修改的。大概的思路也是一样的。
- 基本库函数
/usr/plugins/SNAuth/AuthFunction.php
:
public function oAuthRequest($url, $method = "GET", $parameters = [], $multi = false) {
switch ($method) {
case 'GetWithHeader':
return $this->http($url,'GET', NULL, $parameters);
case 'GET':
//...
default:
//...
}
}
- 调用修改
/usr/plugins/SNAuth/AuthAction.php
:
//$user_str = $this->AuthFunction->oAuthRequest("https://api.github.com/user", "GET", ["access_token" => $access_token]);
$user_str = $this->AuthFunction->oAuthRequest("https://api.github.com/user", "GetWithHeader", ["Authorization:token ".$access_token]);
当然,这里苏南大叔就修改了/user
这一个请求,至于其他的请求,也许也是需要修改的,但是苏南大叔这里并没有用到。大概思路就是把access_token
换到header
里面去传递。特殊的地方,就是传递的格式,这个是最重要的:
"Authorization:token ".$access_token
值得注意的是:在编写程序的时候,这个header
数组,key
是默认的自动增加的数字值,value
是Authorization:token xxxxxx
。
相关链接
代码下载地址如下,记得给个star,谢谢。
- https://github.com/newsn/typecho-plugin-github-oauth
- https://newsn.net/say/github-oauth-flow.html
- https://developer.github.com/changes/2020-02-10-deprecating-auth-through-query-param
总结
github
的这个操作,符合主流程序逻辑。值得推广!顺便说一下,才发现,已经有人给我star了小星星。感动!
来看看更多的oauth
文章吧!点击下面的链接:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。