本人在使用 node + koa来实现gitup的授权登录,但是在第二步获取access_token的时候报下面的错误了。关于gitup如何授权登录,有兴趣的同学可以百度一下,获取访问官网的api地址 https://docs.github.com/cn/developers/apps/building-oauth-apps/authorizing-oauth-apps#%E5%93%8D%E5%BA%94,这里面讲的很详细,本人就不在赘述了,要说的是在获取access_token时候遇到的问题,在这里看看能不能帮到有缘人。
问题复现
报的是这个错误,啥意思,从错误的名称来看,是连接重置了,但是连接为啥会重置呢?
gitup问题
gitup 在国内有一个问题——打不开,然后此时,好多博客或者文章就会让你去使用 科学上网的工具,科学上网的工具呢,本身是走的是一个代理,通过代理来实现gitup可以访问。关于科学上网的工具请自行搜索。
第二步获取access_token
获取第二步的代码很简单,如下:
async gitUpCallBack(ctx: Application.ParameterizedContext) { // 获取之前的code const { code } = ctx.request.query as ILoginGitUpCallbackParams; // 获取到code后,请求gitup服务获取access_token try { const accessToken = await axios({ method: 'post', url: 'https://github.com/login/oauth/access_token?client_id=client_id&client_secret=client_secret&code=' + code, headers: { 'User-Agent': 'blog web' } }) console.log(accessToken, '-----accessToken'); } catch (err) { console.log(err, '-----err'); } ctx.body = '获取成功!' }
上面的代码是一个koa的中间件,然后使用 axios来发送http请求。
错误排查
对于出现错误,我们最主要的是进行错误排查,我一开定位的是 axios是不是不能发送post请求,然后我使用原生的 http服务来发送,也是报相同错误的。
使用postman进行测试
对于同样的参数,我们使用postman进行测试,发现是好的,能够获取预期的结果(access_token)如下:
然后使用postman获取node端的源码,发现和我们的是一样的,我们的代码是没有问题的。
寻找结果
我发现好多错误都类似,并且听到了 proxy 这个词,那我就想到我本身也是有代理的,postman可以请求成功是没有走代理的,所以最后关闭代理进行测试。(下面抽取两个简单的截屏)
关掉科学上网后会发现,我们的gitup已经打不开了,这里提供一个暂时的解决办法,修改hosts配置文件如下
进入gitup
我测试的时候是这么做的,
1.找一个ping gitup.com 延迟比较低的ip,寻找的方法是,输入网址:http://ping.chinaz.com/github.com
2.打开C:\Windows\System32\drivers\etc 目录下面,找到我们的hosts文件,然后进行修改
保存后,就可以打开gitup了,但是有一个缺陷,短暂时间可以用,但是长时间不行,需要频繁的进行修改,目前我还没有办法怎么长时间的访问gitup不挂,除了科学上网外
测试结果
获取成功,大功告成!