微信小程序获取用户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)
Oct 01 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
Apr 12 Javascript
js自定义鼠标右键的实现原理及源码
Jun 23 Javascript
Javascript URI 解析介绍
Mar 15 Javascript
浅谈JavaScript中运算符的优先级
Jul 07 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
vue2.0使用swiper组件实现轮播的示例代码
Mar 03 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
详解如何修改 node_modules 里的文件
May 22 Javascript
js实现自定义滚动条的示例
Oct 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
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jquery调用wcf并展示出数据的方法
2011/07/07 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
Python实现的数据结构与算法之链表详解
2015/04/22 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
keras 权重保存和权重载入方式
2020/05/21 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
升职自荐信
2013/11/28 职场文书
品牌推广策划方案
2014/05/28 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL