openid 和 session_key 是否可以传到客户端问题?
发布于 5 年前 作者 olei 4999 次浏览 来自 官方Issues

最近再做小程序电话号码授权登录问题,  网上看了很多案例, 大部分时将openid 和 session_key 流放到了客户端。

个人认为 openid有两层含义:  1>   此小程序唯一 标识, 整个过程中不会改变

                                                  2>  用户支付时,会用到openid  

                      session_key  :  是数据加密用的

 所以:个人认为 为了安全期间,不能将openid和session_key传输到客户端。

请求大神答疑? 是否可以?

以下为某博客代码:

getPhoneNumber: function (e) {//点击获取手机号码按钮

var that = this;

wx.checkSession({

success: function () {

var ency = e.detail.encryptedData;

            var iv = e.detail.iv;

            var sessionk = that.data.sessionKey;    此处获取sessionkey是否正确

if (e.detail.errMsg == ‘getPhoneNumber:fail user deny’) {

that.setData({

modalstatus: true

});

} else {//同意授权

wx.request({

method: “GET”,

url: 'https://xxx/wx/deciphering.do’,

data: {

encrypdata: ency,

ivdata: iv,

sessionkey: sessionk

},

header: {

‘content-type’: ‘application/json’ // 默认值

},

success: (res) => {

console.log(“解密成功~将解密的号码保存到本地~~”);

console.log(res);

var phone = res.data.phoneNumber;

console.log(phone);

 

}, fail: function (res) {

console.log(“解密失败~~~~~~~~~~~~~”);

console.log(res);

}

});

}

},

fail: function () {

console.log(“session_key 已经失效,需要重新执行登录流程”);

that.wxlogin(); //重新登录

}

});}

1 回复

openId是针对单个小程序的用户的唯一标识。

支付等场景需要验签等操作,所以不存在安全性问题。

大部分开发者选择直接用openId来作为用户的识别方式,是没有问题的。

你上述代码中的session_key只是用来检测用户登录是否过期的。

小程序本来就有这个API:wx.checkSession

这个session_key并不能做一些其他的什么操作,也不存在安全性问题。

参考文档:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.checkSession.html

回到顶部