碼迷,www.tparu.icu
吉利平特名人堂 > 微信 > 詳細

010期平特一码:獲取微信用戶唯一標識openid | 小程序

時間:2018-05-30 18:12:22      閱讀:1569      評論:0      收藏:0      [點我收藏+]

吉利平特名人堂 www.tparu.icu 標簽:OLE   安全   時間   rip   基礎   ble   grant   設置   ssi   

wx.login(OBJECT)

調用接口獲取登錄憑證(code)進而換取用戶登錄態信息,包括用戶的唯一標識(openid) 及本次登錄的 會話密鑰(session_key)。用戶數據的加解密通訊需要依賴會話密鑰完成。

 https://www.w3cschool.cn/weixinapp/weixinapp-api-login.html

 

OBJECT參數說明:

 

參數名類型必填說明
success Function 接口調用成功的回調函數
fail Function 接口調用失敗的回調函數
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

 

 

success返回參數說明:

 

參數名類型說明
errMsg String 調用結果
code String 用戶允許登錄后,回調內容會帶上 code(有效期五分鐘),開發者需要將 code 發送到開發者服務器后臺,使用code 換取 session_key api,將 code 換成 openid 和 session_key

 

 

示例代碼:

//app.js
App({
  onLaunch: function() {
    wx.login({
      success: function(res) {
        if (res.code) {
          //發起網絡請求
          wx.request({
            url: ‘https://test.com/onLogin‘,
            data: {
              code: res.code
            }
          })
        } else {
          console.log(‘獲取用戶登錄態失敗!‘ + res.errMsg)
        }
      }
    });
  }
})

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

請求參數:

參數必填說明
appid 小程序唯一標識
secret 小程序的 app secret
js_code 登錄時獲取的 code
grant_type 填寫為 authorization_code

返回參數:

 

參數說明
openid 用戶唯一標識
session_key 會話密鑰
unionid 用戶在開放平臺的唯一標識符。本字段在滿足一定條件的情況下才返回。具體參看UnionID機制說明

 

返回說明:

//正常返回的JSON數據包
{
      "openid": "OPENID",
      "session_key": "SESSIONKEY"
      "unionid":  "UNIONID"
}
//錯誤時返回JSON數據包(示例為Code無效)
{
    "errcode": 40029,
    "errmsg": "invalid code"
}

 

 


 

一、基礎知識

 

? 接口地址
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
? 請求參數
appid:小程序的唯一標識
secret:小程序的app secret
js_code:用戶的登錄憑證code(使用wx.login({})可獲取到)
grant_type:填寫authorization_code
? 返回參數
expires_in:憑證有效時間,單位:秒
openid:用戶唯一標識
session_key:會話密匙(考慮到應用安全,不應該在網絡上傳輸session_key)

 

二、客戶端原理

1、使用小程序登錄接口wx.login({})獲取用戶的登錄憑證code
2、使用小程序網絡請求API wx.request({})將獲取用戶登錄憑證(code)發送至服務器
示例
/**************************************
* config:小程序配置文件
* loginUrl:服務器地址
* code:返回參數,用戶登錄憑證
* wx.login({}):登錄接口
* wx.request({}):網絡請求API

* 日期:2017-1-1
**************************************/
var CONGIF=require(‘config‘); 
var OBJ_APP_DATA={}; 
OBJ_APP_DATA[‘onLaunch‘]=function(){ 
wx.login({ 
success: (res)=>{
wx.request({
url:CONGIF.loginUrl,
data: {
code:res.code
},
method: ‘GET‘, 
success: (res)=>{
console.log(res.data)
},
})
}
})
}
App(OBJ_APP_DATA);

 

三、服務端php原理

1、使用isset()函數檢測客戶端是否有傳遞code參數
示例
if(isset($_GET[‘code‘])){}
2、使用 curl_init()函數初始化一個CURL會話,初始化成功后返回一個句柄供curl_setopt(), curl_exec(),和 curl_close() 函數使用
示例
$curl = curl_init();
3、使用curl_setopt()設置要獲取的URL地址
示例
$url=‘https://api.weixin.qq.com/sns/jscode2session?appid=‘.$appid.‘&secret=‘.$secret.‘&js_code=‘.$code.‘&grant_type=authorization_code‘;
curl_setopt($curl, CURLOPT_URL, $url);
4、設置是否輸出header
示例
curl_setopt($curl, CURLOPT_HEADER, 1);
5、設置是否輸出結果
示例
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
6、設置是否輸出結果
示例
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
7、設置是否檢查服務器端的證書
示例
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
8、使用curl_exec()將CURL返回的結果轉換成正常數據并保存到一個變量
示例
$data = curl_exec($curl);
9、使用 curl_close() 關閉CURL會話
示例
curl_close($curl);

獲取微信用戶唯一標識openid | 小程序

標簽:OLE   安全   時間   rip   基礎   ble   grant   設置   ssi   

原文地址:https://www.cnblogs.com/kenshinobiy/p/9112375.html

(0)
(0)
   
舉報
評論 一句話評論(0
0條  
登錄后才能評論!
? 2014 吉利平特名人堂 版權所有 京ICP備13008772號-2
迷上了代碼!
幸运飞艇开奖结果网址 北京pk10稳赚技巧 北京pk10容易赚钱吗 福内蒙古时时开奖结果走势图 11选5定胆规律 单机游戏斗地主单机版 比分直播下载 助赢北京时时软件 宝宝计划软件 欢乐二八杠外挂 90win足球即时比分 御彩轩计划软件网站 博远棋牌 怎样算牛牛牌出现概率 007足球即时比分 七星彩教你如何看规律