微信小程序----API、获取openid、消息订阅

这篇具有很好参考价值的文章主要介绍了微信小程序----API、获取openid、消息订阅。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微信小程序二

小程序API

https://www.w3xue.com/mobile/wxminiapp/hpm41q8p.html

基础:

API,全称Application Programming Interface,即应用程序编程接口。

  • API 是一些预先定义函数,目的是用来提供应用程序与开发人员基于某软件或者某硬件得以访问一组例程的能力,并且无需访问源码或无需理解内部工作机制细节。

  • API 就是操作系统给应用程序的调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作)。在 Windows 中,系统API是以函数调用的方式提供的。

说明:

  • wx.on 开头的 API 是监听某个事件发生的API接口

    如:接受一个CALLBACK函数作为参数,当该事件触发时,会调用CALLBACK函数。

  • 如未特殊约定,其他API接口都接受一个OBJECT作为参数。

  • OBJECT中可以指定success,fail,complete来接收接口调用结果

参数名 类型 必填 说明
success Function 接口调用成功的回调函数
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)
外部 api 的引用示例:

js文件:

// pages/demo02/demo02.js
const app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    code:'',
    testList:[],
    dreamCode:'',
    dreamResult:[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    self=this;
  },
  test1:function() {
    //访问外部api需请求:
      wx.request({
        url: 'http://api.tianapi.com/starinfo/index',
        method:'GET',
        //请求参数:
        data:{
          key:'9b46f4069f578a5808847c85ce6b93eb',
          name:'刘德华'
        },
        //接口调用成功的回调函数:
        success:function(res){
            console.log(res.data);
            self.setData({
              testList:res.data.code,
              testList:res.data.newslist
            })
          }
      })
  },
  test2:function() {
    wx.request({
      url: 'http://api.tianapi.com/dream/index',
      method:'GET',
      data:{
        key:'9b46f4069f578a5808847c85ce6b93eb',
        num:5,
        word:'西瓜'
      },  
      success: function(res) {
        console.log(res.data)
         //页面获得数据
        /*self.setData({
            dreamCode:res.data.code,
            dreamResult: res.data.newslist
        })*/
      }   
    })
  }
})

wxml文件:

<!--pages/demo02/demo02.wxml-->
<text>pages/demo02/demo02.wxml</text>
<button open-type="share" bindtap="test2">周公解梦</button>-
<view wx:for="{{dreamResult}}" >
    <view>梦到{{dreamResult[index].title}}------{{dreamResult[index].result}}</view>
</view>

<button type="primary" bindtap="test1">明星百科大全</button>
<view wx:for="{{testList}}" >
  <view>名字:{{testList[index].nationality}}</view> 
</view> 

订阅消息实战

1. 搭配环境,建目录

注意:创建项目时先不要使用云开发,避免不必要的目录

  1. 在app.js文件中初始云环境

     onLaunch() {
          wx.cloud.init({
              env:"cloud1-0gdcaicsce323e0e"
          })
     },
    
  2. 在project.config.json文件中,创建云函数

    "cloudfunctionRoot": "cloud1/",
    

    在目录处新建文件夹命名(出现小云朵成功)

    右键选自己的一个环境,如果只有一个环境的话,就是当前环境。

  3. 创建云函数,右键cloud1(自己的那个云函数目录),选择—>新建Node.js云函数,创建云函数(先获得openid),此文件中的inde.js的 cloud.init() 中初始化,可以用常量cloud.DYNAMIC_CURRENT_ENV

    cloud.init({
        env:cloud.DYNAMIC_CURRENT_NV  //默认取当前云环境ID
    })
    
2. 获取openid

在pages目录的-----index.wxml中

<button bindtap="getOpenid">获取用户openID</button>

在pages目录的-----index.js的代码中

Page({
 //获取用户openID
 getOpenid(){
     wx.cloud.callFunction({
         name:"getOpenid"
     }).then(res=>{
        console.log("获取Openid成功",res)
     }).catch(res=>{
        console.log("获取Openid失败",res)
     })
 }
})

保存后需要再次上传并部署,内容修改就得部署一次

3.获取用户授权

每次订阅消息的时候都需要获取授权

一次性订阅消息、长期订阅消息,详见接口 wx.requestSubscribeMessage

设备订阅消息,详见接口 wx.requestSubscribeDeviceMessage

  1. 定义按钮:
<button bindtap="shouquan" >2.获取用户授权</button>
  1. 授权,绑定模板ID

    //pages目录的-----index.js的Page({})中
    shouquan(){
        wx.requestSubscribeMessage({
            tmplIds: [
                '3PlhCeepxyLBh7SziJ_BCc3Eyg5GOy313bJYATK3EHA'
            ], //此处添加申请的模板ID,多个用英文逗号隔开
            success(res){
              console.log('授权成功-----',res)
            },
            fail(res){
              console.log('授权失败-----',res)
            }
          })
     }
    

【当有多个模板的时候可以通过真机调试,手机进行模板的选择—>

真机调试–>手机扫码(模拟器与手机同步)—>点击获取授权,选择模板】

4. 调用接口下发订阅消息

新建云函数 (getMessages) 初始化步骤同上---->略

  1. getMessages下的index.js文件中

微信小程序----API、获取openid、消息订阅

//getMessages下的index.js文件中
// 云函数入口函数
exports.main = async (event, context) => {
    try{
        //发送订阅消息给用户
        const result = await cloud.openapi.subscribeMessage.send({
          touser:event.openid,	//获取当前环境的openid
          page:"pages/index/index",  //要跳转到哪个页面
          data:{  //推送的内容
            thing1:{
              value:"小程序编程"
            },
            name2:{
              value:'Aurora'
            },
            date3:{
              value:'2022/09/15 14:00'
            },
            thing4:{
                value:'大教室01'
              }
          },
          //模板id
          templateId:'3PlhCeepxyLBh7SziJ_BCc3Eyg5GOy313bJYATK3EHA'  //与前面模板ID相同
        })
        console.log(result)
        return result.errcode
      }catch(err){
        console.log(err);
        return err
      }
}

申请的模板,点击详情中的部分与代码中的名称相对应

微信小程序----API、获取openid、消息订阅

  1. 在pages目录的-----index.js和index.wxml中

    按钮:3.发送订阅消息给单个用户

     //发送消息给单个用户
     sendOne(){
         wx.cloud.callFunction({
            name:"sendMessages"
         }).then(res=>{
            console.log("发送一条信息成功-----",res)
         }).catch(res=>{
            console.log("发送一条信息失败~~~",res)
         })
     }
    

【此时运行整个过程,控制台全部成功,但是手机并不能获取到信息】

解决:

openid没有上传

在pages目录的index.js中添加传入openid

sendOne(){
     wx.cloud.callFunction({
        name:"sendMessages",
        data:{
            //此处openid与touser:event.openid的相同,将第一步获取的openid复制
            openid:"oMKZh4zYY0j7X-DYLAQa2ngdlpfg"   
        }      
     }).then(res=>{
        console.log("发送一条信息成功-----",res)
     }).catch(res=>{
        console.log("发送一条信息失败-----",res)
     })
 }
5.其他问题:
  1. 模板ID中的参数名莫错,模板ID莫复制错

  2. 手机未收到消息去控制台找错来源:

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

errMsg会出现40003(openid有误)等等的错误,可以去官方文档的社区中,将错误信息或者错误代码复制,看他人如何解决或者官方文档提示的错误文章来源地址https://www.toymoban.com/news/detail-483306.html

  1. 授权一次只能发送一次消息

到了这里,关于微信小程序----API、获取openid、消息订阅的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】通过云函数获取用户openid

    1.pages同级目录下新建新文件夹,命名为cloudFunctions(其他名字也可以)。 2.project.config.json中添加以下内容,值为上一步创建的文件夹名字。编译一次后上一步创建的文件夹前图标就带“云”了。 3.app.js内的App中添加 1.右击cloudFunctions文件夹,点击【新建Node.js云函数】,命名为

    2024年02月10日
    浏览(56)
  • uniapp写微信小程序,获取openId、unionId

    appId,secret   可以从微信公众平台获取,(点击右上角头像,向下滑,可以找到) 注意:这个一般写了app.vue里有个onlanch函数,否则有可能在进入小程序时获取不到openid 微信接口路径为 “https://api.weixin.qq.com/sns/jscode2session” 获取unionId的前提条件:微信开放平台绑定你的小程

    2024年02月13日
    浏览(52)
  • 微信小程序如何获取微信号的唯一标识(openid)

    1.获取微信登录凭证 2.登录凭证传回后端获取openid,前端直接调用接口获取openid正式上线代码审核过不去。 3.后端代码(直接返回的openid中含有secret,可发布,但是会提醒你存在安全漏洞,所以对openid进行截取拼接) 3.获取AppSecret和AppID 登录微信公众平台 开发——开发管理——开发

    2024年02月08日
    浏览(49)
  • 微信小程序订阅消息

    subscribeMessage.send | 微信开放文档 由于业务需求 , 需要实现小程序订单状态发送给用户 , 于是微信小程序发送订阅消息就被找到了 这里前端是使用了uniapp , 具体实现方式不清楚,就不瞎bb了 后端这里就是上面的接口文档 , 总共需要是三个步骤 1. 获取小程序 appid 和 密钥 2. 订阅消

    2024年02月09日
    浏览(54)
  • 微信小程序--订阅消息

    关于小程序订阅消息之一次性订阅: 一次性订阅是指授权一次方可接收一次消息;这个最好的应用场景就是自己给自己发送消息,比如订单,当自己下单成功时,调用此接口,会在微信服务消息收到下单成功通知等具体详情。 如果是给别人发,一次性订阅就不适合,类似你

    2024年02月07日
    浏览(42)
  • 微信小程序内嵌H5页面获取openid+分享功能

    主要实现功能:1.通过webview实现小程序内嵌H5页面                          2.在H5页面获取到用户的openid                          3.在H5页面实现分享获取到分享人的openid和被分享者的openid 代码实现: 1.通过webview实现小程序内嵌H5页面 传参:在地址后面加入的参数就是我

    2024年04月23日
    浏览(57)
  • 微信小程序登录获取用户唯一标识OpenId,(SpringBoot项目)

    微信小程序的登录,需要获取到用户的唯一标识OpenId,这里只涉及到后端代码,所以前提是前端申请了一个小程序并且有了appid和secret。 文章目录 一、微信小程序登录流程 二、代码实现 1.引入相关依赖 2.代码实现 实际项目经验分享 先上官方开发文档连接 小程序登录 | 微信

    2024年02月12日
    浏览(52)
  • uniapp 小程序订阅消息 一次订阅多个 wx.requestSubscribeMessage 微信小程序订阅消息

    如图所示,订阅消息 官方文档: 小程序订阅消息官方文档 1,消息类型 (1) 一次性订阅消息 用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。 (2) 长期订阅消息 用户订阅一次后,开发者可长期下发多条消息。 目前长期性订阅消息

    2024年02月09日
    浏览(57)
  • 微信小程序之订阅消息

    其实客户端的步骤很简单 这里放上文档地址 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html 第一步 首先我们需要到微信公众平台的 订阅消息-公共消息模板处选择需要的模板添加到-我的模板。 通过wx.requestSubscribeMessage()方法调起小程序订

    2024年02月11日
    浏览(44)
  • 微信小程序 如何订阅消息?

    微信公众号分为两种类型:订阅号和服务号,它们在功能和使用方式上有一些区别。 1.订阅号(Subscription Account): 2.服务号(Service Account): 微信公众号的类型是在注册时选择的,一旦选择了订阅号或服务号,无法直接转换。如果您主要是提供资讯和更新性内容,订阅号可

    2024年02月06日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包