使用自定义域名之后的 Github page 在使用 Github 登录 Github 时跳转首页,无限循环
问题
博客使用的是Hexo+Github+Gitalk,使用 Github 登录 Gitalk 之后跳转至首页,无限循环,地址栏URL显示为:
https://memorykk.cn/?error=redirect_uri_mismatch&error_description=The+redirect_uri+MUST+match+the+registered+callback+URL+for+this+application.&error_uri=https%3A%2F%2Fdocs.github.com%2Fapps%2Fmanaging-oauth-apps%2Ftroubleshooting-authorization-request-errors%2F%23redirect-uri-mismatch |
解决过程
为了更清楚地检查,将此 URL 中的 Unicode 转为中文:
https://memorykk.cn/? |
根据描述,redirect error registered callback URL不匹配。
打开F12查看Network:
this application我使用的是OAuth Apps,查看其Authorization callback URL,果不其然:
http
和https
的差别还是很大的!修改Authorization callback URL为https
之后成功了。
点击使用GitHub登录之后,又出现 405 问题,
打开F12查看Network:
转换为中文:
Request URL: https://memorykk.cn/TeamSpeak/%7B%7B%20theme.gitalk.proxy%20%7D%7D |
好家伙,这还是源代码形式啊,坑定是后台有什么问题!
检查theme\layout\components\comment.ejs,这行代码果然是从这里出来的:
var gitalk = new Gitalk({ |
之前对node.js也不了解(虽然现在也一样,允悲),没注意格式。仿照上面几行代码改成:
proxy: '<%= theme.gitalk.proxy %>', |
还是报 405 错误,打开F12查看:
总感觉之前白嫖的 CorsAnywhere Proxy 链接压根没有传递过去,直接手动写死在里面:
proxy: 'https://netnr-proxy.cloudno.de/https://github.com/login/oauth/access_token', |
好家伙,成功了,ohhhhhhhhhhh,虽然这种做法极不优雅!
总结
网页出错先用F12看看哪部分的问题,顺藤摸瓜,缩小范围。