thinkphp5.0獲取微信小程式使用者資訊unionid
先說獲取unionid,小程式端傳引數到伺服器端,伺服器端再呼叫微信官方介面,通過小程式傳的引數生成簽名,然後對比微信官方返回的簽名,如果一致,並且在微信開放平臺已經綁定了賬號,獲取unionid需要在微信開放平臺註冊認證,認證需要300塊人民幣,然後繫結微信公眾號或者小程式,才能返回unionid。
小程式端程式碼
//app.jsApp({
onLaunch: function () {
// 展示本地儲存能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登入
wx.login({
success: res => {
// 傳送 res.code 到後臺換取 openId, sessionKey, unionId
var code = res.code;
if (code) {
console.log('code值'+res.code);
// wx.getSetting({
// success:res=>{
// if(res.authSetting['scope.userInfo']){
//已經授權,可以直接呼叫getuserinfo獲取頭像暱稱,不會彈框
wx.getUserInfo({
success: function (res) {
wx.request({
url: '伺服器端介面地址',
data: {
code: code,
iv: res.iv,
rawData: res.rawData,
signature: res.signature,
encryteData: res.encryptedData
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (re) {
if (re.data.code == 1) {
var userInfo = re.data.userInfo;
console.log(userInfo);
} else {
console.log('解密失敗');
}
},
fail: function () {
console.log('系統錯誤');
}
})
if(this.userInfoReadyCallback){
this.userInfoReadyCallback(res)
}
}
})
} else {
console.log('獲取使用者登入態失敗!' + res.errMsg)
}
}
})
},
globalData: {
userInfo: null
}
})
PHP程式碼:
//微信自動登入解密介面
public function login(){
//接收小程式傳過來引數
$code = input("code", '', 'htmlspecialchars_decode');
$rawData = input("rawData", '', 'htmlspecialchars_decode');
$signature = input("signature", '', 'htmlspecialchars_decode');
$encryptedData = input("encryptedData", '', 'htmlspecialchars_decode');
$iv = input("iv", '', 'htmlspecialchars_decode');
//請求微信介面
$params = [
'appid' => '你的小程式appid',
'secret' => '你的小程式secret',
'js_code' => $code,
'grant_type' => 'authorization_code'
];
$res = makeRequest('https://api.weixin.qq.com/sns/jscode2session?appid=wx3717d89b7ef16de2&secret=de0e7a893c40265a9155e9537601887e&js_code=' . $code . '&grant_type=authorization_code', $params);
if ($res['code'] !== 200 || !isset($res['result']) || !isset($res['result'])) {
return json(ret_message('requestTokenFailed'));
}
$reqData = json_decode($res['result'], true);
if (!isset($reqData['session_key'])) {
return json(ret_message('requestTokenFailed'));
}
$sessionKey = $reqData['session_key'];
//對比簽名
$signature2 = sha1($rawData . $sessionKey);
if ($signature2 !== $signature) return ret_message("signNotMatch");
//使用返回的session_key解密encryptData,和rawData比較,解密資訊中也包含openid
$pc = new WXBizDataCrypt('wx3717d89b7ef16de2', $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data );
if ($errCode !== 0) {
return json(ret_message("encryptDataNotMatch"));
}
/**
* 生成第三方3rd_session,用於第三方伺服器和小程式之間做登入態校驗。為了保證安全性,3rd_session應該滿足:
* a.長度足夠長。建議有2^128種組合,即長度為16B
* b.避免使用srand(當前時間)然後rand()的方法,而是採用作業系統提供的真正隨機數機制,比如Linux下面讀取/dev/urandom裝置
* c.設定一定有效時間,對於過期的3rd_session視為不合法
*
* 以 $session3rd 為key,sessionKey+openId為value,寫入memcached
*/
$data = json_decode($data, true);
$session3rd = randomFromDev(16);
// $data['session3rd'] = $session3rd;
cache($session3rd, $data['unionId'] . $sessionKey);
//已經返回unionid,最後怎麼操作隨意
}
相關推薦
thinkphp5.0獲取微信小程式使用者資訊unionid
因公司業務需要,接觸了微信小程式,在做微信自動登入的時候遇到了問題,頭像暱稱未能獲取到,在網上找了一個伺服器端解密的方法,只能獲取到使用者openid和unionid,僅供參考,如果有大佬知道獲取暱稱頭像的方法,請指點一下。先說獲取unionid,小程式端傳引數到伺服器端,伺
.net服務端獲取微信小程式使用者資訊
1 public void RequestWxUserInfo(string code, string iv, string encryptedData, string rawData, string signature) 2 { 3 string res
nodejs獲取微信小程式使用者的unionID
一、unionID機制和獲取途徑 傳送門 二、整體流程 前端通過wx.login獲取使用者的code,再通過wx.getUserInfo獲取到使用者的一些加密資料(需要設定withCredentials:true才可以),然後統一把code和iv和encryptedDa
thinkphp後臺獲取微信小程式使用者資訊
public function sendCode(){ $APPID = '################APPID'; $AppSecret = '#################'; $code = input('get.code'); $url = 'https://ap
獲取微信小程式openid,unionid
1.小程式程式碼 // 登入 wx.login({ success: function (r) { var code = r.code;//登入憑證
反編譯獲取微信小程式原始碼(筆記)
一、前言: 本人的該部落格僅供研究,切記用於非法途徑。如有任何非法行為,皆與本博主無關。 跟著流程走,100%獲取原始碼成功。 流程如下: (1)下載並安裝夜神模擬器。下載地址:https://download.csdn.net/download/qq_31362105/10732350
獲取微信小程式原始碼----親測
Node.js的的執行環境 如果沒有安裝的的NodeJS,請先安裝一下 下載地址:https://nodejs.org/en/ 反編譯的指令碼 這裡提供一個Github上上的qwerty472123大神寫的的n
例項-0基礎微信小程式開發入門1.2-【第一個小程式】
【開啟征程】開啟微信web開發者工具,點選小程式專案:點選右下角的“+”號,將建立快速模板前面的勾去掉然後選擇體驗小程式,目錄隨意,點選確定,即可建立一個全空的小程式專案啦。【建立最基本的目錄結構和檔案】在開始建立之前,我們有必要了解一下最基本的東西:JSON 是一種資料格
PHP 獲取微信小程式介面B二維碼介面
微信小程式介面B二維碼介面呼叫 微信小程式二維碼介面A與C總共生成的碼數量限制為100,000,也就是說如果超出了這個現在二維碼呼叫就會失敗,我這邊的業務需要呼叫二維碼的頻率較多,以防萬一。 微信小程式獲取二維碼首先要獲得access_token
使用nodejs獲取微信小程式帶引數二維碼
由於專案需求,需要獲取小程式頁面的帶有引數的二維碼。好,那就看文件搞吧。 之前都是寫前端,沒有寫過後臺的東西,這次難得有機會組長讓我試一試試用node來寫,那就寫吧。 1、首頁獲取token,傳送request請求,用get的方式,在url後面加上小程式的grant_typ
最簡單的java獲取微信小程式openid的方法,不需要jar包
@RequestMapping("getUserOpenId") @ResponseBody public String getUserOpenId(String appid, String js_code, String secret) {// System.out.println("appid"+app
基予thinkphp5後臺的微信小程式生成二維碼原始碼
public function getcode(){ //微信小程式楚傳遞的引數值 $user_id=$_REQUEST['user_id']; $APPID=$_REQUEST['appId'];
個人如何獲取微信小程式的APPID
暫時性使用,僅供學習研究使用;請優先參考底下圖文介紹連結;假如遇到困難,請在綜合交流區內發帖諮詢;官方文件都是預設你已經有了微信小程式的APPID,但是如何能獲取到微信小程式確實是個技術活微信公眾平臺 1. 在微信公眾平臺註冊小程式點進連結,然後選擇小程式註冊,如下圖所示:
java解析微信小程式使用者資訊demo
1、引入maven依賴 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16</artifactId>
微信小程式個人資訊頁面
在微信小程式中我們要顯示個人資訊的頁面,在個人資訊頁面中我們還需要修改一系列的資訊,那麼就來看看個人資訊的頁面該怎麼搭建吧,以及獲取資訊內容。前臺頁面wxml的搭建<!--pages/personal/personal.wxml--> <view class
微信小程式使用者資訊解密
文章不是很全面,只是截取了專案內容的一部分,不明白的地方可以私信。當初之所以要去解密使用者資料,只是為了拿到unionId,說來奇怪,其實微信的登入憑證校驗介面(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&
Thinkphp5微信小程式獲取使用者資訊介面呼叫筆記
首先在官網下載示例程式碼, 選php的, 這裡有個坑 官方的php檔案,編碼是UTF-8+的, 所以要把檔案改為UTF-8 然後在Thinkphp5 extend資料夾下建立Wxxcx名稱空間,把官方的幾個類檔案放進去(這裡要注意資料夾名, 名稱空間名, 類名的, 大小
微信小程式登入&授權&獲取使用者資訊(thinkphp5後臺)
後臺用到的公共方法(寫入common.php檔案的) 1.傳送HTTP請求方法,用於獲取code。 /** * 傳送HTTP請求方法 * @param string $url 請求URL * @param array $params 請求引數 * @p
微信小程式中資料的儲存和獲取
/儲存資料 try { wx.setStorageSync('key',this.data.radioCheckVal2) //key表示data中的引數
微信小程式(看文件寫例項五)微信小程式課堂寶APP實現獲取簽到列表
根據上篇博文,這篇主要實現獲取簽到列表邏輯。 獲得簽到列表主要有以下步驟: (1)查詢老師的ID (2)查詢老師的簽到記錄 (3)如果當前使用者是老師,直接顯示所有記錄,因為簽到記錄都是老師發起的,肯定每次都簽到 (4)如果當前使用者是學生,以老師的簽到列表作為長度,然後以ite