小程序获取用户openid

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实例

[javascript] view plain copy
  1. //app.js  
  2. App({  
  3.     globalData:{  
  4.         appid:'1wqas2342dasaqwe2323424ac23qwe',//appid需自己提供,此处的appid我随机编写  
  5.         secret:'e0dassdadef2424234209bwqqweqw123ccqwa',//secret需自己提供,此处的secret我随机编写  
  6.   
  7.     },  
  8.     onLaunch: function () {  
  9.      var that = this  
  10.      var user=wx.getStorageSync('user') || {};    
  11.      var userInfo=wx.getStorageSync('userInfo') || {};   
  12.      if((!user.openid || (user.expires_in || Date.now()) < (Date.now() + 600))&&(!userInfo.nickName)){   
  13.         wx.login({    
  14.         success: function(res){   
  15.             if(res.code) {  
  16.                 wx.getUserInfo({  
  17.                     success: function (res) {  
  18.                         var objz={};  
  19.                         objz.avatarUrl=res.userInfo.avatarUrl;  
  20.                         objz.nickName=res.userInfo.nickName;  
  21.                         //console.log(objz);  
  22.                         wx.setStorageSync('userInfo', objz);//存储userInfo  
  23.                     }  
  24.                 });  
  25.                 var d=that.globalData;//这里存储了appid、secret、token串    
  26.                 var l='https://api.weixin.qq.com/sns/jscode2session?appid='+d.appid+'&secret='+d.secret+'&js_code='+res.code+'&grant_type=authorization_code';    
  27.                 wx.request({    
  28.                     url: l,    
  29.                     data: {},    
  30.                     method: 'GET'// OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT    
  31.                     // header: {}, // 设置请求的 header    
  32.                     success: function(res){   
  33.                         var obj={};  
  34.                         obj.openid=res.data.openid;    
  35.                         obj.expires_in=Date.now()+res.data.expires_in;    
  36.                         //console.log(obj);  
  37.                         wx.setStorageSync('user', obj);//存储openid    
  38.                     }    
  39.                 });  
  40.             }else {  
  41.                 console.log('获取用户登录态失败!' + res.errMsg)  
  42.             }            
  43.         }    
  44.       });   
  45.     }   
  46.    },  
  47. }) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jony0303

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值