PHP獲取小程式openid,10行程式碼快速獲取小程式openid

at_1發表於2021-09-09

上一節教大家如何在本地執行php後臺專案,並可以被小程式訪問到,這一節就來給大家講一個實際工作中常用的需求,微信小程式openid的獲取。當然了,還是用我們的php做為後臺。

老規矩,先看效果圖

圖片描述
透過上圖我們可以看到我們成功的獲取到了小程式的openid,而這裡獲取openid是藉助php後臺獲取的。

我們的php核心程式碼,只有下面10行

圖片描述
下面就來講講具體的實現步驟。

一,首先要搭建一個可以本地訪問的php後臺

這裡我在上一節的文章已經講過了,還不知道怎麼配置本地php專案的同學可以去翻看我上篇文章:

二,編寫php程式碼

只需要建立一個如下圖所示的簡單的php檔案就可以了。
圖片描述
把程式碼給大家貼出來。要記得把下面的appid和appSecret換成你自己的。至於如果獲取,我之前的文章也有講過,去翻下我零基礎入門小程式開發的文章即可。

<?php
/**
 * 2019/9/21 20:34
 * author: 程式設計小石頭
 * wechat:2501902696
 * desc: 獲取小程式使用者openid
 */

getOpenid();
function getOpenid() {
    $code = $_GET['code'];//小程式傳來的code值
    $appid = 'wx4b55bb240aec2ee3';//小程式的appid
    $appSecret = '1f6f68884c1add6293cfa9b86e1f6bfd';// 小程式的$appSecret
    $wxUrl = 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code';
    $getUrl = sprintf($wxUrl, $appid, $appSecret, $code);//把appid,appsecret,code拼接到url裡
    $result = curl_get($getUrl);//請求拼接好的url
    $wxResult = json_decode($result, true);
    if (empty($wxResult)) {
        echo '獲取openid時異常,微信內部錯誤';
    } else {
        $loginFail = array_key_exists('errcode', $wxResult);
        if ($loginFail) {//請求失敗
            var_dump($wxResult);
        } else {//請求成功
            $openid = $wxResult['openid'];
            echo "獲取openid成功成功:" . $openid;
        }
    }
}

//php請求網路的方法
function curl_get($url, &$httpCode = 0) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //不做證照校驗,部署在linux環境下請改為true
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    $file_contents = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $file_contents;
}

程式碼就這麼多,我們編寫好以後,執行下專案。
圖片描述

三,編寫小程式程式碼

小程式的程式碼很簡單,就是一個按鈕,點選按鈕的時候我們請求上面定義好的php後臺專案。
小程式程式碼也很簡單
圖片描述
圖片描述
程式碼就上圖這麼點,我把code.js裡的程式碼貼出來給大家

Page({
  getCode() {
    let that = this;
    wx.login({
      success(res) {
        console.log('code', res.code)
        that.getOpenid(res.code)
      }
    })
  },
  getOpenid(wxCode) {
    wx.request({
      url: '',
      data: {
        code: wxCode
      },
      success(res) {
        console.log('獲取成功', res)
      },
      fail(res) {
        console.log('獲取失敗', res)
      }
    })
  }
})

給大家解釋下上面的程式碼,我們透過wx.login來獲取code,然後透過wx.request呼叫我們定義的php後臺。url裡的 Demo.php必須和你的php檔名保持一致。
圖片描述

效果

點選按鈕以後,就可以成功的獲取到我們所需的小程式openid了。效果圖如下
圖片描述

到這裡我們就成功的實現了PHP獲取小程式openid的功能了,是不是很簡單。

後面我會寫更多關於php和小程式的文章,敬請關注。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1817/viewspace-2823783/,如需轉載,請註明出處,否則將追究法律責任。

相關文章