微信小程序获取用户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 相关文章推荐
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
JS与C#编码解码
Dec 03 Javascript
基于javascript的JSON格式页面展示美化方法
Jul 02 Javascript
jquery实现显示已选用户
Jul 21 Javascript
Javascript实现的Map集合工具类完整实例
Jul 31 Javascript
avalon js实现仿微博拖动图片排序
Aug 14 Javascript
jQuery遮罩层效果实例分析
Jan 14 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
使用vue构建移动应用实战代码
Aug 02 Javascript
vue底部加载更多的实例代码
Jun 29 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 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实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
PHP5函数小全(分享)
2013/06/06 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
mui back 返回刷新页面的实例
2017/12/06 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
高一历史教学反思
2014/01/13 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
2015社区个人工作总结范文
2015/05/13 职场文书
企业宣传语大全
2015/07/13 职场文书
学习十八大的感悟
2015/08/11 职场文书
vue实现简单数据双向绑定
2021/04/28 Vue.js