评论

云函数获取openid

获取openid就用它。

代码如下:

app.js:

  //如果担心openid的安全,就用这个函数
  getCloudOpenid: async function () {
    return this.openid = this.openid || (await wx.cloud.callFunction({name: 'login'})).result.OPENID
  },
  //最佳方案。
  getOpenid: async function () {
    (this.openid = this.openid || wx.getStorageSync('openid')) || wx.setStorageSync('openid', await this.getCloudOpenid())
    return this.openid
  },


任何page:

onLoad: async function () {
  console.log(this.openid = await getApp().getOpenid())
},

  //在本page的其他函数里获得openid。
yourFunc: function(){
  console.log(this.openid)
}


云函数login:

const cloud = require('wx-server-sdk')
cloud.init()
exports.main=async()=>{return cloud.getWXContext()}
最后一次编辑于  2020-10-18  
点赞 13
收藏
评论

11 个评论

  • fore
    fore
    2019-11-26

    别人的我不知道,反正我们做的每个小程序都会用到openid,并且每个项目中用openid的时候,都需要确保openid已经被正确获取。目前我们基本上都是使用promise来获取,代码非常不简洁。

    官方是否可以出一个同步的api,在onLaunch时候让我调用一下???

    2019-11-26
    赞同
    回复 5
    • 老张
      老张
      2019-11-26
      并不是onLaunch里就一定最先获得opened,否则就太简单了,一行代码就搞定了。
      2019-11-26
      1
      回复
    • fore
      fore
      2019-11-26回复老张
      期望的就是这个效果,本来就是可以一行代码调用接口的事情。
      2019-11-26
      回复
    • fore
      fore
      2019-11-26回复老张
      只是微信不出这样的接口,谁都没辙。非得开发人员写出一坨坨的代码。
      2019-11-26
      回复
    • 老张
      老张
      2019-11-26回复fore
      想也别想了。首先微信不建议在前端用openid,永远不会有这样的API。其次,代码也没多少,而且可以通用,复制就搞定。
      2019-11-26
      回复
    • 保卫虎鲸
      保卫虎鲸
      2020-07-28
      两位大佬, 这个openid和云数据库的关系的文档在哪里? 官方的云数据库文档看了一遍也没看到openid方面的内容.
      2020-07-28
      回复

正在加载...

登录 后发表内容