溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何實現(xiàn)微信掃碼登錄

發(fā)布時間:2021-09-24 09:49:24 來源:億速云 閱讀:181 作者:小新 欄目:編程語言

這篇文章主要介紹了php如何實現(xiàn)微信掃碼登錄,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

php實現(xiàn)微信掃碼登錄的方法:1、通過js實例化一個對象;2、在html中定義一個div并包含二維碼;3、在$(document).ready()內進行實例化即可。

本文操作環(huán)境:windows10系統(tǒng)、php 7、thinkpad t480電腦。

微信已經成為我們日常生活中必不可少的一部分,為了讓更多的用戶更加方便地使用微信及相關產品,微信掃一掃功能越來越普遍。那么如果我們要自己實現(xiàn)這個功能該如何做呢?

再給出具體的實現(xiàn)代碼之前,我們先來分析下微信掃碼登錄的流程。

首先我們必須要把二維碼放在頁面上顯示出來,二維碼是有失效時間以及失效狀態(tài)的,一旦你掃過一次二維碼或者在某段時間內沒有掃描頁面上的二維碼,那么這個二維碼也就失效了。微信官網(wǎng)給我們提供了兩種方式來顯示二維碼,一種是后臺發(fā)請求返回一個新的頁面,另一種是前端js實例化二維碼內嵌在自己的頁面上。很顯然第一種方式比較簡單方便,但是在實際的項目中兩種方式都會使用到,既然如此我們就把這兩種方式都說明一下。

1、后臺發(fā)請求獲取微信返回的掃碼頁面

$redirect_uri="http://你的微信開放平臺綁定域名下處理掃碼事件的方法";
$redirect_uri=urlencode($redirect_uri);//該回調需要url編碼
$appID="你的appid";
$scope="snsapi_login";//寫死,微信暫時只支持這個值
//準備向微信發(fā)請求
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $appID."&redirect_uri=".$redirect_uri."&response_type=code&scope=".$scope."&state=STATE#wechat_redirect";
//請求返回的結果(實際上是個html的字符串)
$result = file_get_contents($url);
//替換圖片的src才能顯示二維碼
$result = str_replace("/connect/qrcode/", "https://open.weixin.qq.com/connect/qrcode/", $result);
return $result; //返回頁面

這樣子就會返回一個這樣的頁面,掃描后調用$redirect_uri

php如何實現(xiàn)微信掃碼登錄

2、內嵌JS顯示:

這里就是通過js端實例化一個對象即可,首先在<head>標簽內添加如下js文件,

<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

其次在html中定義一個div包含二維碼,

<div id="login_container"></div>

最后在$(document).ready()內進行實例化: 

$(document).ready(function()
{
    var obj = new WxLogin
    ({
        id:"login_container",//div的id
        appid: "你的appid",
        scope: "snsapi_login",//寫死
        redirect_uri:encodeURI("你的處理掃碼事件的方法") ,
        state: "",
        style: "black",//二維碼黑白風格        
        href: "https://某個域名下的css文件"
    });
});

注意其中href里指向的css文件必須放在https協(xié)議下才能引用的到,不然頁面上就是默認樣式(顯示上是一個比較大的二維碼,你無法調節(jié)二維碼的大小,位置,太痛苦了)。最后部分頁面大概長成這樣,這里的二維碼大概只有140px:

php如何實現(xiàn)微信掃碼登錄

好了,二維碼出現(xiàn)在頁面上了,接下來我們就要大概的講講掃碼的邏輯了,整個流程大概分為5步:

php如何實現(xiàn)微信掃碼登錄

走完這五步你就拿到掃碼用戶的所有信息了,之后再寫上自己需要的的代碼邏輯即可(如重定向或者登陸),在代碼里的表現(xiàn)形式如下:

//回調
public function codeinfo()
{
        $code = $_GET["code"];
        $appid = "你的appid";
        $secret = "你的secret";
        if (!empty($code))  //有code
        {
            //通過code獲得 access_token + openid
           $url="https://api.weixin.qq.com/sns/oauth3/access_token?appid=" . $appid
            . "&secret=" . $secret . "&code=" . $code . "&grant_type=authorization_code";
            $jsonResult = file_get_contents($url);
            $resultArray = json_decode($jsonResult, true);
            $access_token = $resultArray["access_token"];
            $openid = $resultArray["openid"];

            //通過access_token + openid 獲得用戶所有信息,結果全部存儲在$infoArray里,后面再寫自己的代碼邏輯
            $infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid;
            $infoResult = file_get_contents($infoUrl);
            $infoArray = json_decode($infoResult, true);
     } }

相信大家在寫完上面的代碼之后已經對掃一掃登錄的流程很清楚了,其實本質上就是多個微信接口的配合調用而已。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“php如何實現(xiàn)微信掃碼登錄”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

php
AI