摘要:需求描述當(dāng)前商城標(biāo)識(shí)授權(quán)第三方開(kāi)發(fā)平臺(tái)網(wǎng)頁(yè)授權(quán)成功后跳轉(zhuǎn)到另一個(gè)商城項(xiàng)目鏈接并帶上當(dāng)前微信用戶信息和微信初始化驗(yàn)證簽名第三方平臺(tái)授權(quán)安裝引用創(chuàng)建一個(gè)跳轉(zhuǎn)到微信掃二維碼授權(quán)頁(yè)面開(kāi)發(fā)平臺(tái)授權(quán)跳轉(zhuǎn)跳轉(zhuǎn)方法為什么我不寫(xiě)到上一個(gè)方法呢因?yàn)槲⑿?/p>
需求描述
當(dāng)前商城(uid標(biāo)識(shí))授權(quán)第三方開(kāi)發(fā)平臺(tái).
網(wǎng)頁(yè)授權(quán)成功后跳轉(zhuǎn)到另一個(gè)商城項(xiàng)目鏈接并帶上當(dāng)前微信用戶信息和微信初始化驗(yàn)證簽名.
第三方平臺(tái)授權(quán)安裝easywechat4
$ composer require overtrue/wechat:~4.0 -vvv
引用
use EasyWeChatFactory;
創(chuàng)建一個(gè)跳轉(zhuǎn)到微信掃二維碼授權(quán)頁(yè)面
/** * 開(kāi)發(fā)平臺(tái)授權(quán)跳轉(zhuǎn) * * @return void */ public function accessView(){ // $uid = Request()->route("uid" , 0); $url = "http://qgcloud.capsui.com/public/index/wxopen/config?uid=" . $uid; $this->assign("url" , $url); return $this->fetch(); }
跳轉(zhuǎn)方法(為什么我不寫(xiě)到上一個(gè)方法呢 因?yàn)槲⑿乓笸粋€(gè)地址)
/** * 開(kāi)發(fā)平臺(tái)跳轉(zhuǎn)授權(quán)掃碼頁(yè) * * @return void */ public function config(){ $uid = Request()->get("uid" , 0); $config = [ "app_id" => "開(kāi)放平臺(tái)第三方平臺(tái) APPID", "secret" => "開(kāi)放平臺(tái)第三方平臺(tái) Secret", "token" => "開(kāi)放平臺(tái)第三方平臺(tái) Token", "aes_key" => "開(kāi)放平臺(tái)第三方平臺(tái) AES Key" ]; $openPlatform = Factory::openPlatform($config); $url = $openPlatform->getPreAuthorizationUrl("http://qgcloud.capsui.com/public/index/wxopen/wxcallback?uid=" . $uid); $this->redirect($url); }
授權(quán)回調(diào)(注意:掃碼確認(rèn)授權(quán)后他第一次回調(diào)不會(huì)帶uid參數(shù),)
引入 use EasyWeChatOpenPlatformServerGuard;
/** * 開(kāi)發(fā)平臺(tái)授權(quán)回調(diào) * * @return void */ public function wxcallback(){ // 這個(gè)表是記錄授權(quán)成功的 //$Wxpublic = new Wxpublic; // 這個(gè)表是記錄授權(quán)成功后傳過(guò)來(lái)所屬uid商城綁定appid //$ShopConfig = new ShopConfig; $get = Request()->param(); $config = [ "app_id" => "開(kāi)放平臺(tái)第三方平臺(tái) APPID", "secret" => "開(kāi)放平臺(tái)第三方平臺(tái) Secret", "token" => "開(kāi)放平臺(tái)第三方平臺(tái) Token", "aes_key" => "開(kāi)放平臺(tái)第三方平臺(tái) AES Key" ]; $openPlatform = Factory::openPlatform($config); $server = $openPlatform->server; // 處理授權(quán)成功事件-第一次回調(diào) // 閉包方法!里面調(diào)用外面的方法請(qǐng)?jiān)趗se里面填寫(xiě) $server->push(function ($message) use ($openPlatform /*, $Wxpublic*/) { $authCode = $message["AuthorizationCode"]; $res = $openPlatform->handleAuthorize($authCode); if($res["authorization_info"]["authorizer_refresh_token"]){ //授權(quán)成功記錄到數(shù)據(jù)庫(kù) //$Wxpublic->insert(["appid" => $res["authorization_info"]["authorizer_appid"] , "createtime" => time()]); } }, Guard::EVENT_AUTHORIZED); // 處理授權(quán)取消事件-第一次回調(diào) // 閉包方法!里面調(diào)用外面的方法請(qǐng)?jiān)趗se里面填寫(xiě) $server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) { //處理數(shù)據(jù)庫(kù)邏輯 //$Wxpublic::appid($message["AppId"])->delete(); //$ShopConfig::appid($message["AppId"])->update(["token" => ""]); }, Guard::EVENT_UNAUTHORIZED); // 第二次回調(diào)會(huì)帶一個(gè)授權(quán)code和自定義參數(shù)商城id(uid) if(isset($get["auth_code"]) && isset($get["uid"])){ $res = $openPlatform->handleAuthorize($get["auth_code"]); $appid = $res["authorization_info"]["authorizer_appid"]; //數(shù)據(jù)庫(kù)邏輯 //$isConfig = $Wxpublic::appid($appid)->count(); //if($isConfig){ //$add = $ShopConfig->where("uid" , $get["uid"])->update(["token" => $appid]); //} } return $server->serve(); }第三方平臺(tái) 網(wǎng)頁(yè)授權(quán)&微信JSSDK初始化簽名生成
/** * 網(wǎng)頁(yè)授權(quán)調(diào)起 * * @return void */ public function htmlAccess(){ $appid = Request()->get("appid" , 0); $config = [ "app_id" => "開(kāi)放平臺(tái)第三方平臺(tái) APPID", "secret" => "開(kāi)放平臺(tái)第三方平臺(tái) Secret", "token" => "開(kāi)放平臺(tái)第三方平臺(tái) Token", "aes_key" => "開(kāi)放平臺(tái)第三方平臺(tái) AES Key" ]; $openPlatform = Factory::openPlatform($config); $data = $openPlatform->getAuthorizer($appid); $appid = $data["authorization_info"]["authorizer_appid"]; $refreshToken = $data["authorization_info"]["authorizer_refresh_token"]; $officialAccount = $openPlatform->officialAccount($appid , $refreshToken); $oauth = $officialAccount->oauth; // 回調(diào)授權(quán)地址 $url = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid"; $response = $officialAccount->oauth->scopes(["snsapi_userinfo"])->redirect($url)->send(); }
網(wǎng)頁(yè)授權(quán)回調(diào)方法
/** * 網(wǎng)頁(yè)授權(quán)回調(diào) * * @return void */ public function callbackOpenid(){ $appid = Request()->get("appid" , null); $config = [ "app_id" => "開(kāi)放平臺(tái)第三方平臺(tái) APPID", "secret" => "開(kāi)放平臺(tái)第三方平臺(tái) Secret", "token" => "開(kāi)放平臺(tái)第三方平臺(tái) Token", "aes_key" => "開(kāi)放平臺(tái)第三方平臺(tái) AES Key" ]; $openPlatform = Factory::openPlatform($config); $data = $openPlatform->getAuthorizer($appid); $appid = $data["authorization_info"]["authorizer_appid"]; $refreshToken = $data["authorization_info"]["authorizer_refresh_token"]; // 獲取微信用戶信息 如openid nickname等信息 $officialAccount = $openPlatform->officialAccount($appid , $refreshToken); $oauth = $officialAccount->oauth; $user = $oauth->user(); // 處理wxconfig初始化JSSDK $officialAccount->jssdk->setUrl("http://quguoshop.capsui.com/"); $wxconfig = $officialAccount->jssdk->buildConfig(["chooseWXPay"], $debug = true, $beta = false, $json = true); $ShopConfig = new ShopConfig; $shopInfo = $ShopConfig::appid($appid)->find(); // 注意 這里我是帶參數(shù)跳轉(zhuǎn)到其他TP5項(xiàng)目里面再用緩存處理一下 $url = "http://quguoshop.capsui.com/public/wxoauthCallback?data=" . json_encode($user->toArray()) . "&token=" . $shopInfo["id"] . "&wxconfig=" . $wxconfig; $this->redirect($url); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/28747.html
摘要:最近搞微信第三方登錄,搞蒙圈了。當(dāng)你把服務(wù)號(hào)綁定到開(kāi)放平臺(tái)之后,網(wǎng)頁(yè)授權(quán)返回的數(shù)據(jù)會(huì)多一個(gè),同一個(gè)微信賬號(hào)在同一個(gè)開(kāi)放平臺(tái)賬號(hào)下的是一致的。 最近搞微信第三方登錄,搞蒙圈了。 我們的業(yè)務(wù)有兩個(gè)場(chǎng)景需要使用微信第三方登錄:1、APP 第三方登錄2、H5網(wǎng)頁(yè)第三方登錄,具體流程:用戶微信端收到一個(gè)二維碼--->掃碼后同意微信授權(quán)-->綁定手機(jī)號(hào)碼 一開(kāi)始糾結(jié)著是不是需要申請(qǐng)公眾號(hào),找了個(gè)專...
摘要:寫(xiě)在前面本周剛在項(xiàng)目中實(shí)現(xiàn)了微信第三方網(wǎng)站掃碼登錄。準(zhǔn)備與注意事項(xiàng)微信公眾平臺(tái)跟微信開(kāi)放平臺(tái)是兩個(gè)不同的平臺(tái),別搞混了。參數(shù)在微信開(kāi)放平臺(tái)中查看。 寫(xiě)在前面 本周剛在項(xiàng)目中實(shí)現(xiàn)了微信第三方網(wǎng)站掃碼登錄。因?yàn)榈谝淮螌?xiě)相關(guān)項(xiàng)目,所以遇到了很多坑。所以寫(xiě)這篇文章是希望像我之前那樣的小白也能從容的開(kāi)發(fā),不要浪費(fèi)無(wú)謂的時(shí)間,這篇文章盡量寫(xiě)的詳細(xì)簡(jiǎn)單。準(zhǔn)備與注意事項(xiàng) 微信公眾平臺(tái)跟微信開(kāi)放平臺(tái)是...
摘要:詳情接口我們這里主要講的是網(wǎng)站應(yīng)用,網(wǎng)站應(yīng)用微信登錄是基于協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信授權(quán)登錄系統(tǒng)即上面的協(xié)議。在微信客戶端授權(quán)登錄獲取用戶信息的可以查看。微信授權(quán)登錄目前支持模式,適用于擁有端的應(yīng)用授權(quán)。 一、OAuth2.0 OAuth(開(kāi)放授權(quán))是一個(gè)開(kāi)放標(biāo)準(zhǔn),允許用戶讓第三方應(yīng)用訪問(wèn)該用戶在某一網(wǎng)站上存儲(chǔ)的私密的資源(如照片,視頻,聯(lián)系人列表),而無(wú)需將用戶名和密碼提供給第三方應(yīng)用。 ...
摘要:本文單純從簡(jiǎn)單的技術(shù)實(shí)現(xiàn)來(lái)講,不涉及開(kāi)放平臺(tái)的多維度的運(yùn)營(yíng)理念。它的特點(diǎn)就是通過(guò)客戶端的后臺(tái)服務(wù)器,與服務(wù)提供商的認(rèn)證服務(wù)器進(jìn)行互動(dòng)能夠滿足絕大多數(shù)開(kāi)放平臺(tái)認(rèn)證授權(quán)的需求。 本文單純從簡(jiǎn)單的技術(shù)實(shí)現(xiàn)來(lái)講,不涉及開(kāi)放平臺(tái)的多維度的運(yùn)營(yíng)理念。 什么是開(kāi)放平臺(tái) 通過(guò)開(kāi)放自己平臺(tái)產(chǎn)品服務(wù)的各種API接口,讓其他第三方開(kāi)發(fā)者在開(kāi)發(fā)應(yīng)用時(shí)根據(jù)需求直接調(diào)用,例如微信登錄、QQ登錄、微信支付、微博登錄...
摘要:本文單純從簡(jiǎn)單的技術(shù)實(shí)現(xiàn)來(lái)講,不涉及開(kāi)放平臺(tái)的多維度的運(yùn)營(yíng)理念。它的特點(diǎn)就是通過(guò)客戶端的后臺(tái)服務(wù)器,與服務(wù)提供商的認(rèn)證服務(wù)器進(jìn)行互動(dòng)能夠滿足絕大多數(shù)開(kāi)放平臺(tái)認(rèn)證授權(quán)的需求。 本文單純從簡(jiǎn)單的技術(shù)實(shí)現(xiàn)來(lái)講,不涉及開(kāi)放平臺(tái)的多維度的運(yùn)營(yíng)理念。 什么是開(kāi)放平臺(tái) 通過(guò)開(kāi)放自己平臺(tái)產(chǎn)品服務(wù)的各種API接口,讓其他第三方開(kāi)發(fā)者在開(kāi)發(fā)應(yīng)用時(shí)根據(jù)需求直接調(diào)用,例如微信登錄、QQ登錄、微信支付、微博登錄...
閱讀 2261·2021-11-19 09:58
閱讀 1779·2021-11-15 11:36
閱讀 2926·2019-08-30 15:54
閱讀 3465·2019-08-29 15:07
閱讀 2828·2019-08-26 11:47
閱讀 2919·2019-08-26 10:11
閱讀 2563·2019-08-23 18:22
閱讀 2818·2019-08-23 17:58