加载中...
  • 微信网页授权获取code

    官方文档

    首先要做微信网页授权之前我们需要做些准备,申请公众号,但个人公众号在没有进行认证的情况下,权限不足,所以我这里是先用的测试号,权限很多,可用于开发时进行测试,
    测试号登录地址:
    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

    可以看到那里有需要你进行的配置信息

    R9x9KJ.png

    往下看

    R9xSv4.png

    R9vz2F.png

    对了,不要加上http://

    接口配置信息修改

    可以先阅读接口指南
    https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

    说白了就是让你在后台写个get请求的接口。而Token就是类似与字段值,在测试号这里配置的,跟接口里设置的相同就好了。
    事实上只要是个get请求的接口,而且返回是 echost参数内容那就是成功的
    R9xGPf.png

    但微信官方为了安全起见,不建议我们之前这样返回,而经过了一些处理
    R9xJG8.png

    接口代码实例有:java,php,c#,c++等,就是没有ndoe的,哈哈,但是还是可以看着写出来的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    async index() {
    const { ctx, app } = this;
    let { signature, echostr, timestamp, nonce } = ctx.query;

    console.log(ctx.query)

    const token = 'zwp123'; // 这里也就是配置里面的token了,可随便设置,只要是一样的就好

    // 将token、timestamp、nonce三个参数进行字典序排序
    const arr = [token, timestamp, nonce];
    arr.sort();

    // 将三个参数字符串拼接成一个字符串进行sha1加密
    const str = arr[0]+ arr[1] + arr[2];
    var sha1 = require('sha1'); // 这里需要你引入sha1进行加密

    // 开发者获得加密后的字符串可与signature对比
    if(sha1(str) === signature){
    ctx.body = echostr;
    }else{
    ctx.body = false;
    }
    }

    到了这里即可提交接口配置信息,在服务器后台可以看到get请求获取的参数信息,这样也就配置成功了

    好了,那我们看看网页上是怎么写吧,如何获取code

    R9xsiV.png
    官方文档写的很清楚,需要这些参数,那就直接给就好了

    授权方式有两种,我这里选择的是第二种,重点是redirect_uri这里。一开始看文档看到我一头雾水,

    这里需要写个接口用于接受code信息,在后台写好前端可否访问就行,一样是get请求

    这里示例get请求auth接口

    1
    2
    3
    4
    5
    6
    7
    8
    // 微信网页授权登录获取code
    async auth() {
    const { ctx, app } = this;
    let { code } = ctx.query;

    console.log(ctx.query)
    ctx.body = code;
    }

    ##网页代码示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <!DOCTYPE html>
    <html>
    <head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type" />
    <title>微信网页授权登录</title>
    </head>
    <body>
    <script>
    var local = encodeURI('http://zwp.xiat123.cn/auth') // 获取页面url
    var appid = 'wx74e1bXXXXXXf'

    window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+ appid +'&redirect_uri='+ local +'&response_type=code&scope=snsapi_userinfo#wechat_redirect'
    </script>

    </body>
    </html>

    当访问这个页面就能看到这个样子的页面,也就是用户是否同意登录
    R9xyGT.png
    允许,则获取到code信息

    上一篇:
    那些宝贵的时间
    下一篇:
    JavaScript字典序(alphanumeric)排序
    本文目录
    本文目录