利用Ngrox在本地微信开发 Oauth不走回调函数 返回 401Unauthorized。

Sept 06 使用微信公众号测试的(设置的回调地址需要备案吗)

微信服务器配置的是http://xxx.ngrok.cc(xxx是ngrox自定义前缀)
获取网页授权的回调地址也是http://xxx.ngrok.cc

clipboard.png

代码的redirect_url为http://xxx.ngrok.cc/test

clipboard.png

当直接在微信开发者测试工具 输入这串网址是可以得到地址栏返回的Code和State(说明是网页授权回调地址没有错误,当scope=snsapi_userinfo还可以出现获取昵称头像请求的页面,虽然点击后出现Invalid signature

图片描述

服务器返回消息

clipboard.png

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的权限不足 网站没有备案的原因 无法请求微信服务器走回调(很可能)?

阅读 3.9k
2 个回答

解决了 很无语 因为用了两个插件 导致发过去签名校验错误

新手上路,请多包涵

在网页接口中设置 安全域名

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题