微信小程序获取用户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+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
Mar 10 Javascript
javascript获取所有同类checkbox选项(实例代码)
Nov 07 Javascript
鼠标滑过出现预览的大图提示效果
Feb 26 Javascript
javascript模拟订火车票和退票示例
Apr 24 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
Nov 17 Javascript
JS原型链怎么理解
Jun 27 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
ejsExcel模板在Vue.js项目中的实际运用
Jan 27 Javascript
vue 实现全选全不选的示例代码
Mar 29 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
vue实现鼠标经过动画
Oct 16 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
js中关于String对象的replace使用详解
2011/05/24 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
简单解决Python文件中文编码问题
2015/11/22 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
特色蛋糕店创业计划书
2014/01/28 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
八项规定整改方案
2014/02/21 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
课程改革实施方案
2014/03/16 职场文书
体育系毕业生自荐信
2014/06/28 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
Python基础知识学习之类的继承
2021/05/31 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记