微信小程序获取用户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 相关文章推荐
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
BootStrap selectpicker后台动态绑定数据
Jun 01 Javascript
Vue单文件组件基础模板小结
Aug 10 Javascript
VUE 自定义组件模板的方法详解
Aug 30 Javascript
前端深入理解Typescript泛型概念
Mar 09 Javascript
js String.prototype.trim字符去前后空格的扩展
Aug 23 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
测量JavaScript函数的性能各种方式对比
Apr 27 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
gd库图片下载类实现下载网页所有图片的php代码
2012/08/20 PHP
php 中奖概率算法实现代码
2017/01/25 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
Python读写zip压缩文件的方法
2018/08/29 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
环境工程大学生个人的自我评价
2013/10/08 职场文书
暑期社会实践感言
2014/02/25 职场文书
学校督导评估方案
2014/06/10 职场文书
退学证明范本3篇
2014/10/29 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android