微信小程序获取用户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获取QueryString的方法小结
Feb 28 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
js使用cookie记录用户名的方法
Nov 26 Javascript
jQuery基础知识点总结(必看)
May 31 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
vue路由组件按需加载的几种方法小结
Jul 12 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
Sep 27 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 04 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 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
DOTA2 1月28日更新:监管系统降临刀塔世界
2021/01/28 DOTA
一个php作的文本留言本的例子(五)
2006/10/09 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
vuex Module将 store 分割成模块的操作
2020/12/07 Vue.js
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
[04:50]DOTA2亚洲邀请赛小组赛第四日 TOP10精彩集锦
2015/02/02 DOTA
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
pandas多级分组实现排序的方法
2018/04/20 Python
pycharm创建一个python包方法图解
2019/04/10 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
python实时监控logstash日志代码
2020/04/27 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
大三在校生电子商务求职信
2013/10/29 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
施工安全协议书范本
2014/09/26 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
车间质检员岗位职责
2015/04/08 职场文书
2015年国培研修感言
2015/08/01 职场文书
2019年工作总结范文
2019/05/21 职场文书
汽车销售合同文本
2019/08/08 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书