C2/C3 Wiki

C2/C3开发者的乐园

用户工具

站点工具


c2接入到小程序

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
c2接入到小程序 [2018/05/21 09:10] – [高级部分] Avenc2接入到小程序 [2024/01/22 11:09] (当前版本) – 外部编辑 127.0.0.1
行 28: 行 28:
 注意JSON格式,即可实现全屏,另外注意,调试基础库版本需高于1.9.4,此命令才有效 注意JSON格式,即可实现全屏,另外注意,调试基础库版本需高于1.9.4,此命令才有效
 === 微信登录 === === 微信登录 ===
 +微信登录需要后端支持
 +在默认模板的 app.js 中有示例代码
 +<code>    wx.login({
 +      success: res => {
 +        // 发送 res.code 到后台换取 openId, sessionKey, unionId
 +      }
 +    })
 +</code>
 +改成
 +<code>    wx.login({
 +      success: res => {
 +        // 发送 res.code 到后台换取 openId, sessionKey, unionId
 +        if (res.code) {
 +          var that = this
 +          wx.request({
 +            url: 'https://LOGIN_REQUEST_URL/',
 +            data: {
 +              code: res.code
 +            },
 +            success: function (result) {
 +              let openId = result.data.openid;
 +              wx.setStorageSync('openid', openId)
 +              if (this.userOpenidCallback) {
 +                this.userOpenidCallback(result)
 +              }
 +            }
 +          })
 +        } else {
 +          console.log('ERR' + res.errMsg);
 +        }
 +      }
 +    })
 +</code>
 +这样之后就可以在本地缓存中取出openid,对应后端代码如下:
 +<code>
 +<?PHP
 +header("Access-Control-Allow-Origin: *");
 +$appid = "YOUR_APPID";
 +$secret = "YOUR_APPSECRET";
 +
 +@$code = $_REQUEST["code"];
 +$url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant-type=authorization_code";
 +$res = getcurl($url);
 +$arr = json_decode($res, true);
 +//$openid = $arr["openid"];
 +print_r($res); 
 +exit();
 +</code>
 === 获取用户信息 === === 获取用户信息 ===
 +由于微信修改了策略,必须要点击按钮才允许获取用户信息,所以之前打算在打开页面时直接获取用户信息的计划就可以拜拜了,在默认模板项目 index.js 中,有如下代码<code>  getUserInfo: function(e) {
 +    console.log(e)
 +    app.globalData.userInfo = e.detail.userInfo
 +    this.setData({
 +      userInfo: e.detail.userInfo,
 +      hasUserInfo: true
 +    })
 +  }
 +</code>
 +改为
 +<code>  getUserInfo: function (e) {
 +    console.log(e)
 +    app.globalData.userInfo = e.detail.userInfo
 +    this.setData({
 +      userInfo: e.detail.userInfo,
 +      hasUserInfo: true
 +    });
 +    wx.request({
 +      url: 'https://INFO_REQUEST_URL',
 +      data: {
 +        openid: wx.getStorageSync('openid'),
 +        info: app.globalData.userInfo
 +      }
 +    })
 +  }
 +</code>
 +执行这一步的目的,是为了将UserInfo传递到后端进行保存,便于在C2页面中用AJAX取得Userinfo,对应的后端需要用数据库(Redis或MySQL)保存上传的Userinfo,以openid为标识Key,存储数据,代码如下:
 +<code>
 +<?PHP
 +$redis = new Redis();
 +$redis->connect('REDIS_HOST', 'REDIS_PORT');
 +$redis->auth('REDIS_AUTH');
 +@$info = $_REQUEST["info"];
 +@$oid = $_REQUEST["openid"];
 +
 +$redis->hset("userinfo", $oid, $info);
 +$redis->close();
 +exit();
 +</code>
 +之后在C2中用AJAX再取数据时,直接用openid从redis中取值即可,如
 +<code>
 +echo $redis->hget("userinfo",$oid);
 +</code>
 === 向C2页面传值 === === 向C2页面传值 ===
 +
 ===用按钮调起向指定用户转发 === ===用按钮调起向指定用户转发 ===
  
c2接入到小程序.1526865016.txt.gz · 最后更改: (外部编辑)