微信小程序获取用户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 相关文章推荐
javascript中的有名函数和无名函数
Oct 17 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
JavaScript避免代码的重复执行经验技巧分享
Apr 17 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
Jun 30 Javascript
jquery移动节点实例
Jan 14 Javascript
Jquery搜索父元素操作方法
Feb 10 Javascript
半个小时学json(json传递示例)
Dec 25 Javascript
js实现图片粘贴上传到服务器并展示的实例
Nov 08 Javascript
vue2实现可复用的轮播图carousel组件详解
Nov 27 Javascript
vue axios 简单封装以及思考
Oct 09 Javascript
javascript防抖函数debounce详解
Jun 11 Javascript
vue全局使用axios的操作
Sep 08 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 采集程序原理分析篇
2010/03/05 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php比较相似字符串的方法
2015/06/05 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
网吧收银员岗位职责
2013/12/14 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
外出考察学习心得体会
2016/01/18 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书