最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP請(qǐng)求微信接口獲取用戶電話號(hào)功能示例

 更新時(shí)間:2023年07月06日 08:36:19   作者:PHP太baby咯  
這篇文章主要介紹了PHP請(qǐng)求微信接口獲取用戶電話號(hào)功能,簡(jiǎn)單講述微信請(qǐng)求接口獲取用戶信息的相關(guān)功能,結(jié)合具體實(shí)例形式分析了php調(diào)用微信請(qǐng)求接口獲取用戶電話號(hào)碼的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

前言情景劇

       業(yè)務(wù)場(chǎng)景是為了在用戶登錄的時(shí)候判斷其是否已經(jīng)成功注冊(cè),沒(méi)有成功注冊(cè)的話就將獲取到的openid和session_key加密后作為token傳給前端,然后讓前臺(tái)通過(guò)組件獲得code之后連著token一起傳給后端,后端拿著code再去請(qǐng)求微信接口獲取到用戶的電話號(hào)碼,以此完成注冊(cè)。

實(shí)現(xiàn)過(guò)程中的問(wèn)題

         結(jié)合微信官方手冊(cè):phonenumber.getPhoneNumber | 微信開放文檔 (qq.com)

怪我沒(méi)好好看手冊(cè),中間發(fā)生了hin多的插曲。比如報(bào)錯(cuò)返回:

require POST method hint       errcode: 43002

一查文檔告訴我:這個(gè)請(qǐng)求需要用post請(qǐng)求!可是,我明明是用的post請(qǐng)求啊~~~

后面通過(guò)面向百度編程,在找了5678個(gè)公共發(fā)起post請(qǐng)求的方法之后,終于有一個(gè)post請(qǐng)求沒(méi)問(wèn)題,但又遇到了一個(gè)問(wèn)題,他返回: [0,null]

這里的原因是比較讓我耗費(fèi)時(shí)間的:這個(gè)接口的請(qǐng)求,必須在用戶處于登錄的條件下,并且必須在互聯(lián)網(wǎng)能夠訪問(wèn)到的公共網(wǎng)站上(也就是得在我的項(xiàng)目配置好的域名下去請(qǐng)求,才能夠返回值!我在本地試了好久,氣煞我也!

如果你后面寫好了對(duì)返回值的判斷的話會(huì)報(bào)錯(cuò):

Trying to access array offset on value of type null 。

就是告訴你不能嘗試將 null,bool,int,float 或 resource 類型的值用作數(shù)組 ( 例如 $null[“key”] ) 會(huì)產(chǎn)生一個(gè)通知。

遇到的這個(gè)問(wèn)題我是萬(wàn)萬(wàn)妹想到,搞了整整一下午,最后在公司大佬的幫助下半個(gè)小時(shí)幫我解決了問(wèn)題。ps:第一個(gè)參數(shù)access_token那是輕輕松松(有問(wèn)題可以看看和我的代碼哪里不同)

廢話不多say,上代碼!

common.php中

/**
 * 發(fā)送curl get
 * @param string $url
 * @return mixed
 */
function curl_get($url)
{
    $oCurl = curl_init();
    if (stripos($url, "https://") !== FALSE) {
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1
    }
    if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
        curl_setopt($oCurl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
    }
    curl_setopt($oCurl, CURLOPT_URL, $url);
    curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
    $sContent = curl_exec($oCurl);
    $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    if (intval($aStatus["http_code"]) == 200) {
        return $sContent;
    } else {
        return false;
    }
}
if (!function_exists('http_post_json')){ //這一行是判斷公共方法有無(wú)這個(gè)方法,避免重名~
    /**
     * PHP發(fā)送Json對(duì)象數(shù)據(jù)
     * @param $url string
     * @param $jsonStr string
     * @param string[] $headers
     * @return array
     */
    function http_post_json(string $url, string $jsonStr, array $headers = array(
        'Content-Type: application/json; charset=utf-8',
    )): array
    {
        $headers[] =         'Content-Length: ' . strlen($jsonStr);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        return array($httpCode, $response);
    }
}

調(diào)用接口代碼:(有空可以自己封裝一下~)

/**必須先進(jìn)入登錄狀態(tài),然后拿到phone的code去請(qǐng)求然后拿到access_code,請(qǐng)求phone的接口 */
            $appid = getConfig('appid_y');   //填寫自己的appid,小程序中看
            $secret = getConfig('secret_y');    //填自己的secret,公眾平臺(tái)看
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
            $access_token = json_decode(curl_get($url),true);    
            if(isset($access_token['errcode']))
                return ['errcode'=>$access_token['errcode'],'msg'=>'請(qǐng)求失敗','data'=>$access_token];
            $access_token = $access_token['access_token'];   //獲取到了access_token
            //請(qǐng)求電話號(hào)使用方法只能在公網(wǎng)能訪問(wèn)的目錄下進(jìn)行,本地進(jìn)行沒(méi)有返回值
            $url = 'https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token='.$access_token;
            $json_code = json_encode(['code'=>$param['code']]);
            $headers = [
                'Accept: application/json',
                'User-Agent: */*',
                'Content-Type: application/json; charset=utf-8',
            ];
            $phone = http_post_json($url,$json_code,$headers);
            $phone[1] = json_decode($phone[1],true); 
            if(empty($phone[1])||$phone[1]['errcode']!=0)
                throw new Exception('系統(tǒng)獲取手機(jī)號(hào)失敗');
            $phoneNumber = $phone[1]['phone_info']['phoneNumber'];
            /**拿到電話號(hào)碼end */

另外,thinkphp5獲取微信授權(quán)用戶手機(jī)號(hào)的相關(guān)實(shí)現(xiàn)方法,可參考前面一篇:http://m.fzitv.net/article/229956.htm

相關(guān)文章

  • php使用ob_start()實(shí)現(xiàn)圖片存入變量的方法

    php使用ob_start()實(shí)現(xiàn)圖片存入變量的方法

    這篇文章主要介紹了php使用ob_start()實(shí)現(xiàn)圖片存入變量的方法,是對(duì)緩存的靈活運(yùn)用,具有既定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php的一些小問(wèn)題

    php的一些小問(wèn)題

    這是我日常使用中的一些問(wèn)題,經(jīng)過(guò)baidu google大叔們的幫助學(xué)會(huì)的
    2010-07-07
  • php萬(wàn)字碼出完美守護(hù)進(jìn)程詳解

    php萬(wàn)字碼出完美守護(hù)進(jìn)程詳解

    守護(hù)進(jìn)程到底是怎么實(shí)現(xiàn)的?為什么有的程序既可以自己就成為守護(hù)進(jìn)程,又可以通過(guò)systemd 來(lái)后臺(tái)運(yùn)行?本文將為大家具體講解,感興趣的可以了解一下
    2022-07-07
  • php搜索文件程序分享

    php搜索文件程序分享

    php文件查找程序,輸入一個(gè)路徑確定后會(huì)遍歷目錄下所有的文件和文件夾,通過(guò)遞歸可以找到文件夾下面的每一個(gè)文件,再通過(guò)文件名和輸入的關(guān)鍵字匹配,則可以查找到你想要的文件,需要的朋友可以參考下
    2015-10-10
  • PHP數(shù)組實(shí)例總結(jié)與說(shuō)明

    PHP數(shù)組實(shí)例總結(jié)與說(shuō)明

    PHP中共有超過(guò)30個(gè)新的數(shù)組相關(guān)函數(shù),其中很多通用函數(shù)允許您檢查給定數(shù)組中是否存在特定對(duì)象、對(duì)數(shù)組元素計(jì)數(shù)、增加或刪除元素,或?qū)υ嘏判颉?
    2011-08-08
  • PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類完整實(shí)例

    PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類完整實(shí)例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的常規(guī)正則驗(yàn)證helper公共類,結(jié)合完整實(shí)例形式分析了php針對(duì)常規(guī)的電話、手機(jī)、郵箱、賬號(hào)等進(jìn)行正則驗(yàn)證的操作技巧,需要的朋友可以參考下
    2017-04-04
  • PHP設(shè)計(jì)模式之抽象工廠模式實(shí)例分析

    PHP設(shè)計(jì)模式之抽象工廠模式實(shí)例分析

    這篇文章主要介紹了PHP設(shè)計(jì)模式之抽象工廠模式,結(jié)合實(shí)例形式分析了php抽象工廠模式的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • php數(shù)組保存文本與文本反編成數(shù)組實(shí)例

    php數(shù)組保存文本與文本反編成數(shù)組實(shí)例

    這篇文章主要介紹了php數(shù)組保存文本與文本反編成數(shù)組的方法,通過(guò)兩個(gè)自定義函數(shù)string2array與array2string實(shí)例展示了php數(shù)組保存文本與文本反編成數(shù)組的實(shí)現(xiàn)方法,具有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php自動(dòng)獲取字符串編碼函數(shù)mb_detect_encoding

    php自動(dòng)獲取字符串編碼函數(shù)mb_detect_encoding

    使用 mb_detect_encoding() 函數(shù)來(lái)判斷字符串是什么編碼的。
    2011-05-05
  • php中照片旋轉(zhuǎn) (orientation) 問(wèn)題的正確處理

    php中照片旋轉(zhuǎn) (orientation) 問(wèn)題的正確處理

    這篇文章主要介紹了php中照片旋轉(zhuǎn) (orientation) 問(wèn)題的正確處理,文中給出了詳細(xì)的介紹和示例代碼,相信對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來(lái)一起看看吧。
    2017-02-02

最新評(píng)論

芮城县| 龙南县| 满城县| 石柱| 来安县| 延边| 洪湖市| 耿马| 平定县| 甘泉县| 成安县| 徐州市| 宿州市| 安庆市| 犍为县| 清新县| 金阳县| 抚松县| 郴州市| 武陟县| 荆州市| 界首市| 辽宁省| 尚志市| 平遥县| 肇州县| 文安县| 台中县| 建水县| 兴国县| 阿克苏市| 新和县| 望谟县| 蛟河市| 碌曲县| 迭部县| 高密市| 盘山县| 三亚市| 长治县| 徐闻县|