微信小程序获取用户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 相关文章推荐
jQuery文本框(input textare)事件绑定方法教程
Apr 24 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 Javascript
jquery中对于批量deferred的处理方法
Jan 22 Javascript
js常用数组操作方法简明总结
Jun 20 Javascript
JavaScript中的数学运算介绍
Dec 29 Javascript
jQuery实现判断滚动条到底部
Jun 23 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
vue项目中用cdn优化的方法
Jan 03 Javascript
.vue文件 加scoped 样式不起作用的解决方法
May 28 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 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
url decode problem 解决方法
2011/12/26 PHP
preg_match_all使用心得分享
2014/01/31 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
JavaScript中的Window窗口对象
2008/01/16 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
2012/04/07 Javascript
基于jquery的可多选的下拉列表框
2012/07/20 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python循环语句之break与continue的用法
2015/10/14 Python
python 获取字符串MD5值方法
2018/05/29 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
数据库面试要点基本概念
2013/10/31 面试题
初中学校军训方案
2014/05/09 职场文书
未婚证明书模板
2014/10/08 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
DSP接收机前端设想
2022/04/05 无线电
MySQL数据库 任意ip连接方法
2022/05/20 MySQL