微信小程序获取用户openid的实现


Posted in Javascript onDecember 24, 2018

1、wx.login(OBJECT)

调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。

2、code 换取 session_key

这是一个 HTTPS 接口,开发者服务器使用登录凭证 code 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。
接口地址:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

详细的介绍请看小程序APIhttps://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject

3、获取用户openid实例

//app.js
App({
  globalData:{
    appid:'1wqas2342dasaqwe2323424ac23qwe',//appid需自己提供,此处的appid我随机编写
    secret:'e0dassdadef2424234209bwqqweqw123ccqwa',//secret需自己提供,此处的secret我随机编写
 
  },
  onLaunch: function () {
   var that = this
   var user=wx.getStorageSync('user') || {}; 
   var userInfo=wx.getStorageSync('userInfo') || {}; 
   if((!user.openid || (user.expires_in || Date.now()) < (Date.now() + 600))&&(!userInfo.nickName)){ 
    wx.login({ 
    success: function(res){ 
      if(res.code) {
        wx.getUserInfo({
          success: function (res) {
            var objz={};
            objz.avatarUrl=res.userInfo.avatarUrl;
            objz.nickName=res.userInfo.nickName;
            //console.log(objz);
            wx.setStorageSync('userInfo', objz);//存储userInfo
          }
        });
        var d=that.globalData;//这里存储了appid、secret、token串 
        var l='https://api.weixin.qq.com/sns/jscode2session?appid='+d.appid+'&secret='+d.secret+'&js_code='+res.code+'&grant_type=authorization_code'; 
        wx.request({ 
          url: l, 
          data: {}, 
          method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT 
          // header: {}, // 设置请求的 header 
          success: function(res){ 
            var obj={};
            obj.openid=res.data.openid; 
            obj.expires_in=Date.now()+res.data.expires_in; 
            //console.log(obj);
            wx.setStorageSync('user', obj);//存储openid 
          } 
        });
      }else {
        console.log('获取用户登录态失败!' + res.errMsg)
      }     
    } 
   }); 
  } 
  },
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
jQuery阻止同类型事件小结
Apr 19 Javascript
ScrollDown的基本操作示例
Jun 09 Javascript
基于iframe实现类似于ajax的页面无刷新
May 31 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
Mar 01 Javascript
vue.extend实现alert模态框弹窗组件
Apr 28 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
Aug 16 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
Sep 16 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 Javascript
vue接通后端api以及部署到服务器操作
Aug 13 Javascript
vue-router启用history模式下的开发及非根目录部署方法
Dec 23 #Javascript
小程序实现人脸识别功能(百度ai)
Dec 23 #Javascript
优雅的elementUI table单元格可编辑实现方法详解
Dec 23 #Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
Dec 23 #Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 #Javascript
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 #jQuery
JavaScript时间日期操作实例小结【5个示例】
Dec 22 #Javascript
You might like
PHP初学者头疼问题总结
2006/07/08 PHP
php异常处理方法实例汇总
2015/06/24 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
jQuery实现本地存储
2020/12/22 jQuery
Javascript实现打鼓效果
2021/01/29 Javascript
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
Python 占位符的使用方法详解
2019/07/10 Python
python实现根据文件格式分类
2019/10/31 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
python的json包位置及用法总结
2020/06/21 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
副董事长岗位职责
2014/04/02 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android