- 可以通过短信链接打开小程序吗?
是否可以通过短信链接打开小程序?有没有什么合作渠道,或者需要申请之类的?
2019-11-19 - 获取openid问题,那位同僚有遇到过的,帮忙解答一下
///WxApi.js static getOpenid() { var self = this; return new Promise((resolve, reject)=>{ self.login().then(function(code){ var appid = CONF.WX.APPID; var secret = CONF.WX.SECRET; var url = 'https://mydomain/getopenid?code=' + code; //发起网络请求 wx.request({ url: url, success: function (res) { if (res.data.success) { resolve(res.data.data); } else { reject(res.data.err); } }, fail: function (err) { reject(err); } }) },function(error){ reject(error); }); }); } ///Storage.js static getOpenId() { return wx.getStorageSync(CONST_CONF.OPENID); } static setOpenid(openid) { wx.setStorageSync(CONST_CONF.OPENID, openid); } ///app page ///尝试在App启动的时候获取一次openid存储到localStorage var WxApi = require('./service/wxapi'); var Storage = require('./service/storage'); App({ onLaunch: function () { console.log('App Launch'); //////这里好像工作不正确////////// this.setOpenid(); }, onShow: function () { console.log('App Show') }, onHide: function () { console.log('App Hide') }, globalData: { hasLogin: false }, setOpenid: function () { WxApi.getOpenid().then(function (data) { Storage.setOpenid(data.openid); }); }, }) ///login page ///先检查localStorage是否已经缓存过openid,如果有就直接保存到data里面 ///如果没有再去获取一次 Page({ /** * 页面的初始数据 */ data: { openid: '' }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var self = this; //////这里好像工作不正确////////// var openid = Storage.getOpenId(); if(openid){ self.setData({ openid: openid }); }else{ self.getOpenid(); } }, /** * 获取 openid */ getOpenid: function(){ var self = this; WxApi.getOpenid().then(function (data) { self.setData({ openid: data.openid }); }); } } 实现思路: 首先,获取openid是放到服务端去获取的,小程序端提交code到服务端,见WxApi.js -> getOpenid方法 1. app启动的时候尝试获取一次,保存到localStorage 2. 登录的时候从localStorage获取,如果能拿到就跳过,不能拿到就尝试获取一次,保存到当前页面的data里面。 问题: 场景一、开发环境,第一次进去,然后登录,拿不到openid。 退出重新登录,可以拿到openid。 场景二、生产环境,重复上面的操作多次,依然无法拿到openid。
2017-07-21