Sept 06 使用微信公众号测试的(设置的回调地址需要备案吗)
微信服务器配置的是http://xxx.ngrok.cc(xxx是ngrox自定义前缀)
获取网页授权的回调地址也是http://xxx.ngrok.cc
代码的redirect_url为http://xxx.ngrok.cc/test
当直接在微信开发者测试工具 输入这串网址是可以得到地址栏返回的Code和State(说明是网页授权回调地址没有错误,当scope=snsapi_userinfo还可以出现获取昵称头像请求的页面,虽然点击后出现Invalid signature)
服务器返回消息
Ngorx返回信息也是401 Unauthorized。
而且 我把Code复制到代码里 直接使用 是可以获得access_token的
但是迷的是 不走回调函数
app.get('/test', function (req, res, next) {
console.log("ttttyyttttttttttttttttttttttttttttttttt")
console.log(req)
})
没有打印信息
只能眼睁睁看着结果返回,但却没有req的返回,不走回调函数
尝试解决方法
1 用户在微信中打开你的网址 A
2 你在服务器里面偷换下给他重定向到网址 B
3 用户眼睁睁看着 B 网址展现一个是否同意授权的按钮
4 用户闭眼按下去,网址 B 跳到了 网址 C
5 你在服务器里面拿到了网址 C 上面的 code
6 你在服务器里面拿着 code 和 公众号 id/secret 拼了个网址 D
7 你在服务器里面请求网址 D 要回来 access_token 和 openID
8 你在服务器里面拿着 openID 去请求用户资料作者: Scott
链接:http://www.imooc.com/article/...
看了慕课里讲师的文章,发现我还少了个网址 A用来跳转B ,之前是直接点击网址B,那就加个A,实在没办法只能一步步试。(间接点击B链接方法)
//A链接 不走回调,无法重定向到B
app.get('/test1', function (req, res, next) {
let appid = WeChatConf.appid
let redirect_url = 'http://lwh117.ngrok.cc/test' //链接C
let url = OauthApi.getAuthorizeURL(redirect_url, '', 'aaax');
//B链接 利用oauth-wechat库生成授权回调地址
//3个参数redirect_url,scope(不填默认snsapi_base),state
res.redirect(url);
})
//C链接 在回调地址里取Code 和 Token 无法重定向到B自然C也不走
app.get('/test', function (req, res, next) {
console.log(req)
let code = req.query.code
.......
})
然后点击自定义菜单跳转
let menus = {
"button": [
{
"type": "click",
"name": "首页3",
"key": "http://xxx.ngrok.cc/test1"
}
......
]}
根本不走回调 页面跳转同样出现Invalid signature 没有打印信息 连A都不走 更别说BCD了
Ngorx 信息 401
很懊恼 求指教 是不是Ngrox/test的权限不足 网站没有备案的原因 无法请求微信服务器走回调(很可能)?
解决了 很无语 因为用了两个插件 导致发过去签名校验错误