网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

微信小程序前臺的用戶數據入庫(后臺Laravel)

發布時間:2018-05-08 14:20 所屬欄目:小程序開發教程

搗鼓了兩天 斷斷續續把這個微信小程序后臺獲取用戶數據流程給打通了

接下來就把這幾天收獲的記錄一下。

首先 我們可以看到微信小程序官方 文檔 wx.login


通過此圖 我們知道 前臺要傳 一個 code給后臺,后臺拿到code 并結合appid和appsecret請求微信接口服務,拿到openid和session_key

查閱文檔 我們可以清楚知道

后臺要獲得用戶數據 就需要前臺除了傳code 還需要傳 iv和 encryptedData


后臺拿到這兩個 并結合拿code去請求得到的session_key便可以解密獲得用戶數據 包括頭像 昵稱 城市 等

那么這個iv和encryptedData前臺怎么獲得呢

很簡單 通過wx.getUserInfo

wx.getUserInfo({
 success: function(res) {
var  iv= res.iv
var .encryptedData=res.encryptedData
}
})

 

然后通過request 將code iv 和encryptedData 給post后臺過去

wx.login({
     success: function (res) {
       console.log(res.code)
if (res.code) {
         wx.getUserInfo({
           withCredentials: true,
           success: function (res_user) {
             wx.request({
//后臺接口地址
               url: '你后臺的接口的地址',
               data: {
                 code: res.code, // code  必須給  
                 encryptedData: res_user.encryptedData, //密文串  必須給
                 iv: res_user.iv                             //加密初始量 必給
},
               method: 'GET',
               header: {
'content-type': 'application/json'
},
               success: function (res) {
                 wx.setStorageSync('openId', res.data.openId); //拿到openid  存入session
}
})
}

 

于是來到后臺Laravel 5.4部分

首先我們定義接口 (我第一次是再web.php定義路由 會受到要求post傳token的限制,于是可以考慮寫在api.php里面)

之后轉到控制器
這之前先安裝 guzzlehttp/guzzle 包用于向微信接口服務發送請求
安裝方式直接 composer require guzzlehttp/guzzle

如何使用也很簡單 不需要設置什么 直接再控制器 use GuzzleHttp\Client;

之后建立 一個allusers表 放用戶 openid nickName 等

然后通過 php artisan make:model Allusers 建立一個Eloquent ORM模型

并在模型中定義表名和主鍵

class Alluser extends Model
{
protected $table = 'allusers';
//public $timestamps = false;   //這個是看你是否要向表中傳建立時間和更新數據時間
protected $primaryKey='openid';
}

 

然后
我們下載微信官方的PHP版解密文檔 ,并將其引入可再控制器使用

解壓拿到一個PHP文件 在app下建立Common放入PHP文件


然后來到composer.json下 的 "autoload" 的"classmap": 里面加入 "app/Common/PHP/"

如下

"autoload": {
"classmap": [
"database",
"app/Common/PHP/"
],

 

然后在目錄下執行 composer dumpautoload 便可以

最后我們便可以在我們的控制器下書寫拿到openid和session_key的代碼和加解密以及數據入庫

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;
use GuzzleHttp\Client;
use App\Model\Alluser;



class apiController extends Controller
{

// 獲取微信用戶信息
public function getcode(Request $request)
{

       $code = $request->get('code');
       $encryptedData = $request->get('encryptedData');
       $iv = $request->get('iv');
       $appid = "你的appid";
       $secret = "你的secret";



       $client = new \GuzzleHttp\Client();
       $res = $client->request('GET', 'https://api.weixin.qq.com/sns/jscode2session', [
'query' => ['appid' =>$appid,
'secret' => $secret,
'js_code' => $code,
'grant_type' => 'authorization_code']
]);
       $body = json_decode($res->getBody());
       $openid = $body->openid;
       $session_key = $body->session_key;


       $userifo = new \WXBizDataCrypt($appid, $session_key);

       $errCode = $userifo->decryptData($encryptedData, $iv, $data);


       $info = json_decode($data); 
       $nickName = $info->nickName;
       $avatarUrl = $info->avatarUrl;
       $province = $info->province;
       $city = $info->city;

       $alluser = new Alluser();
if (!$alluser->find($openid))
{
           $alluser->openid = $openid;
           $alluser->session_key = $session_key;
           $alluser->nickName = $nickName;
           $alluser->avatarUrl = $avatarUrl;
           $alluser->province = $province;
           $alluser->city = $city;
           $alluser->save();
}



if ($errCode == 0) {
return ($data);
} else {
return ($errCode);
}



}
}

 

最后 微信小程序編譯 請求200 數據便可以正常入庫!!



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/24341.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×