微信小程序获取用户openid

转:原文链接:https://blog.csdn.net/qq_27626333/article/details/54614037

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. })  

你可能感兴趣的:(微信小程序)