小程序插件授权以及页面到组件传值

最近在做一个插件,有这样的一个需求,首先是插件授权,需要获取到用户的openId,官方提供了一个用户信息组件,需要在插件所依附的小程序里的app.json文件里加上"functionalPages": true这个字段即可,其他的仿照官方提供的Demo,这样就能够获取到用户的临时code去后端调用获取微信用户openid的接口。

这个解决了就引出一个新的问题,因为是插件,从小程序直接到插件我需要传一个token,但是进入到插件的一个页面必须是授权组件。组件没法从小程序的页面里拿到值,因此,先在插件里建立一个logind的page页面。

<!-- 引用组件的页面模版wxml -->
<view>
    <my-component my-property="{{buserId}}"></my-component>
</view>
// plugin/pages/login/login.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    buserId:""
  },

 

  /**
   * 生命周期函数--监听页面卸载
   */
  onLoad: function (opt) {
    wx.setStorageSync("buserId", opt.buserId);
    var that = this;
    that.setData({
      buserId: opt.buserId
    })
  }

})

buerId为从路径的参数获取到的,现在就是如何把这个buserId传给用户信息组件里。
在用户信息组件里加一个properties。

/*auth.js*/
Component({
  properties: {
    myProperty: { // 属性名
      type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
      value: '', // 属性初始值(可选),如果未指定则会根据类型选择一个
      observer: function (newVal, oldVal) { } // 属性被改变时执行的函数(可选),也可以写成在methods段中定义的方法名字符串, 如:'_propertyChange'
    }
  },
  methods: {
    loginSuccess(res) {
      console.log(this.data.myProperty);
      wx.request({
        url: data.url,
        data: {
          code: res.detail.code,
          encryptedData: res.detail.encryptedData,
          iv: res.detail.iv,
          buserid: this.data.myProperty
        },
        method: 'POST',
        success: function (result) {
          console.log(result)
          var data = result.data.data;
          wx.setStorageSync("token", data.tminstoreToken);
          wx.setStorageSync("openid", data.openid);
          wx.navigateTo({
            url: 'plugin://myPlugin/scan?wxuserid=' + data.wxuserId + "&buserid=" + this.data.myProperty
          })
        }
      })  
    },
    loginFail(res) {
      console.log(res)
    }
  }
})

这样就能拿到那个buserId到后端获取响应的数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值