如何优雅的调试微信、微博等基于 OAuth2.0 协议的第三方登录

今天一哥们儿问我,新项目的测试服务器什么时候搭配好,我说怎么了兄弟?他说,OAuth2 做测试得用一台能上外网的服务器啊……

这话听着耳熟,之前也有另外一个哥们儿,做一个微信登录花了两天多,问他时间都去哪了,他说,测试麻烦,写完代码,得先部署到测试机,才能测试……

原来还有这么多哥们儿,不知道测试 OAuth2.0 登录,根本不需要一台外网的测试机么?老司机实在看不下去了。

测试桌面端 OAuth 登录

这个再简单不过了好吗,假如你在微博的 OAuth2.0 服务里设置的授权回调是 chrisyue.com,你只需要打开 hosts 文件,将 chrisyue.com 指向 127.0.0.1 就好了,然后用 chrisyue.com 来访问你的项目。

测试移动端 OAuth 登录

比上面也就稍微复杂一点点,假如你在微信的 OAuth2.0 服务设置的回调是 chrisyue.com,因为要求必须用微信才能登录,但手机又不方便改 hosts 文件,不过没关系,不用 root 你的手机。同桌面端的步骤,没错,依然是改电脑上的 hosts 文件,只不过,chrisyue.com 不再指向 127.0.0.1。电脑和手机放在同一局域网下,假设电脑在此局域网的 IP 是 192.168.0.1,就在 hosts 里将 chrisyue.com 指向它,然后打开 charlse 或者 mitmproxy 等代理工具。

再拿出你的手机,设置使用代理,IP 就是电脑的 IP,端口号看你在代理工具上怎么设置的了…… 这样在微信上访问 chrisyue.com 的时候,其实访问的是电脑。

这样就行了?这假的回调网站也行?

还真没有哪里不对,客户端访问本地假的 chrisyue.com,发现用户没登录,跳转到微博或者微信做登录操作,用户登录成功之后,微博或者微信带着 code (或者 access_token 如果你用 implicit grant flow 的话)重定向回 chrisyue.com,放心,不会跳到真的 chrisyue.com,还是那个假的,然后假的 chrisyue.com 拿到 code 之后,后面怎么样我就不说了。

wx pay

CC BY-NC-ND 4.0 如何优雅的调试微信、微博等基于 OAuth2.0 协议的第三方登录 by Chrisyue's Blog is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

发表评论

电子邮件地址不会被公开。