准备:由于个人无法申请微信公众订阅号,这边便使用微信的测试账号对网页进行授权
测试号申请及设置外网域名
首先我们先申请一个官方的测试账号,申请地址如下:
点击这个链接,使用微信扫一扫登录,即可登陆成功,获取测试账号信息:
下拉页面找到测试号二维码那一栏,使用微信扫一扫关注这个测试公众号。关注成功后,稍等一会就会显示出用户列表。
配置完测试账号后,继续下拉页面找到网页服务中的网页账号的设置,点击修改:
将我们在natapp中申请的外网域名配置进去:
注意:由于是测试号,这一块不会严个去检测这个域名,如果是使用真实的公众账号去配置时,会对配置的域名进行检测,但即便是测试,也要保证这个域名是可用的,不然无法进行联调。
手动获取openid
1.第一步,用户同意授权后,获取code参数:
完成以上测试账号的配置及微信网页授权后,创建一个springboot的web工程,并打开natapp的客户端(保证通过外网域名能够访问我们这个springboot项目的接口)。关于获取code这一步就需要仔细查看微信的官方文档了。
其实就是微信用户点击下面这个链接,便表示同意授权,然后便跳转到我们设置的回调地址中,然后我们只需要更改下该链接中的参数即可。
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxab63xxxxxxxx&redirect_uri=http://xiongzhilong.natapp1.cc/sell/wx/auto&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
appid:测试账号信息中的appid
redirect_uri: 这个便是我们自己设置的回调地址 ,当用户点击链接时,微信会重定向到这个回调地址,并传递一个code参数,我们只需要在后台接收这个参数,便获取到了code
其他的按照文档的要求填写即可。
使用code来换取access_token
当我们获取到code,可以通过code换取access_token,这一步还是需要认真阅读上一步的官方文档
通过阅读官方文档可知,获取code后,可以通过请求以下链接来获取access_token,同样的在这个链接填写自己的appid,sercret和刚刚获取的code,至于grant_type参数不变即可:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxab6370xxxx80e64d&secret=ab372b55f6ea347xxxxc9067dfd2&code=021rbU2i0KhTsw1U7l3i0bOV2i0rbU2H&grant_type=authorization_code
访问这个链接后,我们便能得到一个json字符串,里面就有我们想要的access_token和openid了。
{
"access_token": "9_lZjiw19HhAga4cZ9C4rmtN50AkLzCwLVnlp8msI9xvCCWMIR88CmZAtB-IN1SGOwR_nh76V100vaTF8qihmBnfDx7XYynqHurb4UiqSZTDo",
"expires_in": 7200,
"refresh_token": "9_oMBSt0Bu-UUbVajpfo4OdyPwIfYbN1lut8KHjT4JEMTTbITtPnBFcQopP-SIzYvWHQuEdeQRcVHt1pRJHwvDhecDrd5pGz5HPckOCeHvmxg",
"openid": "ok_HP0txxYBxxxxxxd1kZGz6A",
"scope": "snsapi_base"
}
到此为止,我们手工获取openid的方式就这样完成了。其实也还有另外一种方式获取,那边是使用第三方的sdk了。