众所周知,微信公众号分为订阅号、服务号和企业号。撇开企业号不谈,虽然只有服务号能够通过微信接口获得用户级别信息(特别是针对每个公众号唯一的openId),但我们可以仍可以在未认证的订阅号中通过平台测试号开发测试用户基本信息。
微信第三方登录的原理和流程不再赘述,下面说明一下测试号开发的过程。
首先打开测试页面,先登录任一类型的公众号(包括未认证的),在左侧菜单找到 开发-->开发者工具,进入“公众平台测试账号”,这里时需要刷微信认证的二维码(任一微信账户都可以,与登录微信公众平台的账号无关)。
在测试管理的界面,可以得到你的微信对应测试账号的appId和appSecret的值。
接下来的接口配置URL,是需要在我们自己服务上实现的servlet服务的url,具体的实现代码参考这篇文章:http://www.jb51.net/article/78305.htm。注意,该servlet必须能够被外网访问;如果部署到正式公众号的话,还需要域名。Token填写任意的字符串,同时请务必确保servlet中的token参数与它保持一致。
“JS接口安全域名”中填写访问servlet的外网IP或者域名。
接下来把页面拉倒最下面,找到“体验接口权限表”中的 网页帐号-->网页授权获取用户基本信息 一项,点击“修改”连接,将访问servlet的外网IP或者域名也填写在这里。
使用手机扫描“测试号二维码”,就进入了该测试号对应的微信公众号,这时会发现公众号里没有任何菜单,我们还需要配置菜单,但是并没有可视化设置菜单的地方,需要通过测试接口才能在测试公众号上增加菜单。
打开第一步中的的 开发-->开发者工具,进入“在线接口调试工具”。
1)获取access_token:页面默认就是该接口,输入我们测试账号的appId和appSecret,就得到了access_token,请注意,它是有有效期的;
2)选择接口类型是“自定义菜单”,可以通过json格式建立菜单,先填写刚刚得到的access_token,在body中按如下格式输入创建菜单的json:
{
"button": [
{
"type": "click",
"name": "流金岁月",
"key": "V1001_TODAY_MUSIC",
"sub_button": []
},
{
"name": "菜单",
"sub_button": [
{
"type": "view",
"name": "登录",
"url": "loginUrl",
"sub_button": []
}
]
}
]
}
其中的loginUrl替换成微信第三方鉴权回调登录的url,格式是https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect,这里的 REDIRECT_URI 就是我们自己开发的中间servlet。在servlet中获取到微信平台赋予的code,再调用https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code接口,在返回结果中即可获取openId,更详细的交互流程在微信的开发接口说明中都有详细介绍。
最终,在测试公众号中即可通过菜单测试登录页面。