美文网首页
获取微信公众号的openid并发送模板消息之前后端

获取微信公众号的openid并发送模板消息之前后端

作者: 小马将过河 | 来源:发表于2019-06-22 16:21 被阅读0次

    如今的开发感觉已经离不开微信了,虽然相关的文章已经比微信官网还要多了,但是别人家的再好也是别人家的,自己走一遍还是挺有意义的。

    如果是开发环境,还没有审核的微信公众号,那自然是不能发送模板消息的,只能获取到微信用户信息。需要申请个测试的公众号,官网免费申请。申请好以后,需要在"网页服务"->"网页账号"里配置一下oauth2.0的授权回调地址。

    测试号

    后面的操作就跟下面我正式的开发者平台一样了。

    作为前端小白,有机会从零开始申请公众号,开发公众号,自然要学到什么记录什么。
    本篇记录下开发环境怎么获取openid并且发送模板消息的。

    参考
    微信网页开发授权官方文档
    微信公众平台,微信网页授权,redirect_uri参数错误,解决方法

    获取微信用户信息

    1、关注微信公众号
    2、绑定微信号称为网页开发者


    image.png

    3、修改微信网页授权
    关于网页授权回调域名的说明

    • 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;

    • 授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.htmlhttp://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.comhttp://music.qq.comhttp://qq.com无法进行OAuth2.0鉴权

    • 如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可。

    先配置服务器,保证根域名下可以访问到微信提供的测试文件。
    如果您没有可用的域名,或许这篇文章可以祝您一臂之力。
    配置好以后是这样的:

    image.png
    配置授权域名
    image.png
    image.png
    • 注意:这一步如果是tomcat做的容器,将txt文件放在tomcat/webapps/ROOT/下即可。
      如果用的nginx转发的,将文件放在根目录即可。
      比如:nginx如下:
        location / {
            root   /opt/site/alk-patient;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
    
    目录
    image.png

    如果这一步没有配置,域名是加不上去的。


    image.png

    这一步要是有问题不会配,只能说这位后台适合去买庆丰包子。

    4、获取code
    回调url要用urlencode处理,比如我的回调地址是https%3a%2f%2fxhapp.3vyd.com%2fMP_verify_5J1FbKvfyqtzU26N.txt
    设置在微信api里如下
    https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=https%3a%2f%2fxhapp.3vyd.com%2fMP_verify_5J1FbKvfyqtzU26N.txt&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect

    将该URL用微信开发者工具访问后


    image.png

    同意授权,跳转成功后,想要的code在url里


    code

    5、获取微信用户信息
    获取到了code以后,调用服务端的接口,获取用户信息:

    user-info
    服务端看微信官网API,出问题概率太小,不再贴代码。粘一下服务端打出来的log:
    =============== REQUEST START ===============
     request-id:d0ae146d-86fa-4dfb-8224-f0f90b234e4a
     request-uri: /api/public/weixin/authorized/001g4LGs0ns6xf1qaPGs0kS1Hs0g4LG4
     request-method: :get
     request-query: 
     request-body:  
    2019-06-22 15:54:16,796 [XNIO-1 task-2] INFO  alk-wxapi.routes.weixin - 请求微信access-token的 url: %s https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=001g4LGs0ns6xf1qaPGs0kS1Hs0g4LG4&grant_type=authorization_code 
    2019-06-22 15:54:17,056 [XNIO-1 task-2] INFO  alk-wxapi.routes.weixin - ====== 请求微信access-token返回结果 ===== :  {:access_token 22_laqOVUrxrg5URkqS18gzDqdvgsHlkl5tXxBU6pbaqI9kIqdAdDVMk7zw0gMmoUlR2F1uQnhyzfdlmyixsP3qLA, :expires_in 7200, :refresh_token 22_eHVuzmK9VGxgQsxQV0qwCx9eNoECv7506YXsaXQH9LxEMifD5KwXkTRKAG2WxdlIkj9ZthbSC2wFbtaYGfNClg, :openid oIzsW5sck7l9kmtwDb66_RAvdepY, :scope snsapi_userinfo} 
    2019-06-22 15:54:17,057 [XNIO-1 task-2] INFO  alk-wxapi.routes.weixin - 请求微信用户信息的 url: %s https://api.weixin.qq.com/sns/userinfo?access_token=22_laqOVUrxrg5URkqS18gzDqdvgsHlkl5tXxBU6pbaqI9kIqdAdDVMk7zw0gMmoUlR2F1uQnhyzfdlmyixsP3qLA&openid=oIzsW5sck7l9kmtwDb66_RAvdepYlang=zh_CN 
    2019-06-22 15:54:17,256 [XNIO-1 task-2] INFO  alk-wxapi.routes.weixin - ====== 请求微信用户信息user-info返回结果 ===== :  {:sex 1, :nickname 马海强, :city Qingdao, :headimgurl http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLqxGWwK3lTGAffuGickR7V1VjAiawaAicIsoxGGAD0yWf2toLUZGAiaFHwS8QDMvZ2vLW3QJloKTnIPQ/132, :openid oIzsW5sck7l9kmtwDb66_RAvdepY, :language zh_CN, :province Shandong, :country CN, :privilege []} 
    2019-06-22 15:54:38,673 [XNIO-1 task-2] INFO  jdbc.sqlonly - SELECT * FROM `t_patient` p WHERE p.`deleted` = FALSE AND p.`openid` = 'oIzsW5sck7l9kmtwDb66_RAvdepY'; 
     
    2019-06-22 15:54:38,834 [XNIO-1 task-2] INFO  jdbc.sqlonly - batching 1 statements: 1: INSERT INTO `t_patient`(`patient_id`, `nick_name`, `gender`, `openid`, 
    `province`, `city`, `country`, `headimgurl`, `unionid`, `create_time`, `status`) values ('a8dfb64eb45549b0b109e7170ac131e0', 
    '马海强', '男', 'oIzsW5sck7l9kmtwDb66_RAvdepY', 'Shandong', 'Qingdao', 'CN', 'http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLqxGWwK3lTGAffuGickR7V1VjAiawaAicIsoxGGAD0yWf2toLUZGAiaFHwS8QDMvZ2vLW3QJloKTnIPQ/132', 
    NULL, NOW(), 20); 
     
    2019-06-22 15:54:38,841 [XNIO-1 task-2] INFO  alk-wxapi.routes.weixin - 微信公众号注册新用户,用户信息:%s  {:sex 1, :nickname 马海强, :city Qingdao, :headimgurl http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLqxGWwK3lTGAffuGickR7V1VjAiawaAicIsoxGGAD0yWf2toLUZGAiaFHwS8QDMvZ2vLW3QJloKTnIPQ/132, :openid oIzsW5sck7l9kmtwDb66_RAvdepY, :language zh_CN, :province Shandong, :country CN, :privilege []} 
    2019-06-22 15:54:38,843 [XNIO-1 task-2] INFO  alk-wxapi.middleware.log-interceptor - response: {:code 1, :message "操作成功", :data {:sex 1, :nickname "马海强", :city "Qingdao", :headimgurl "http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLqxGWwK3lTGAffuGickR7V1VjAiawaAicIsoxGGAD0yWf2toLUZGAiaFHwS8QDMvZ2vLW3QJloKTnIPQ/132", :openid "oIzsW5sck7l9kmtwDb66_RAvdepY", :language "zh_CN", :province "Shandong", :country "CN", :privilege []}}
     request-id:d0ae146d-86fa-4dfb-8224-f0f90b234e4a 
    2019-06-22 15:54:38,853 [XNIO-1 task-2] INFO  alk-wxapi.middleware.log-interceptor - 
    =============== response END ===============
    

    到此,获得用户信息。

    公众平台配置模板消息

    官方文档

    1、从模板库中选择适合自己的模板,添加称为自己的模板,获取的模板id


    模板

    2、查看模板消息详情,确认字段内容


    模板详情

    3、公众号里基本配置->IP白名单配置当前网络外网地址IP

    image.png

    4、postman调用发消息

    image.png
    • 发送模板消息


      image.png

    收到的消息


    收到消息

    完美!
    收关!

    相关文章

      网友评论

          本文标题:获取微信公众号的openid并发送模板消息之前后端

          本文链接:https://www.haomeiwen.com/subject/crnjqctx.html