真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

創(chuàng)新互聯(lián)建站成立與2013年,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元開(kāi)原做網(wǎng)站,已為上家服務(wù),為開(kāi)原各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):18982081108

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

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

微信已經(jīng)成為我們?nèi)粘I钪斜夭豢缮俚囊徊糠郑瑸榱俗尭嗟挠脩?hù)更加方便地使用微信及相關(guān)產(chǎn)品,微信掃一掃功能越來(lái)越普遍。那么如果我們要自己實(shí)現(xiàn)這個(gè)功能該如何做呢?

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

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

1、后臺(tái)發(fā)請(qǐng)求獲取微信返回的掃碼頁(yè)面

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

這樣子就會(huì)返回一個(gè)這樣的頁(yè)面,掃描后調(diào)用$redirect_uri

2、內(nèi)嵌JS顯示:

這里就是通過(guò)js端實(shí)例化一個(gè)對(duì)象即可,首先在標(biāo)簽內(nèi)添加如下js文件,

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

最后在$(document).ready()內(nèi)進(jìn)行實(shí)例化:

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

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

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

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

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

//回調(diào)
public function codeinfo()
{
        $code = $_GET["code"];
        $appid = "你的appid";
        $secret = "你的secret";
        if (!empty($code))  //有code
        {
            //通過(guò)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"];

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

相信大家在寫(xiě)完上面的代碼之后已經(jīng)對(duì)掃一掃登錄的流程很清楚了,其實(shí)本質(zhì)上就是多個(gè)微信接口的配合調(diào)用而已。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“php如何實(shí)現(xiàn)微信掃碼登錄”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


網(wǎng)頁(yè)題目:php如何實(shí)現(xiàn)微信掃碼登錄
網(wǎng)頁(yè)地址:http://weahome.cn/article/ihicpd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部