摘要:需求描述當前商城標識授權第三方開發平臺網頁授權成功后跳轉到另一個商城項目鏈接并帶上當前微信用戶信息和微信初始化驗證簽名第三方平臺授權安裝引用創建一個跳轉到微信掃二維碼授權頁面開發平臺授權跳轉跳轉方法為什么我不寫到上一個方法呢因為微信
需求描述
當前商城(uid標識)授權第三方開發平臺.
網頁授權成功后跳轉到另一個商城項目鏈接并帶上當前微信用戶信息和微信初始化驗證簽名.
第三方平臺授權安裝easywechat4
$ composer require overtrue/wechat:~4.0 -vvv
引用
use EasyWeChatFactory;
創建一個跳轉到微信掃二維碼授權頁面
/** * 開發平臺授權跳轉 * * @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(); }
跳轉方法(為什么我不寫到上一個方法呢 因為微信要求同一個地址)
/** * 開發平臺跳轉授權掃碼頁 * * @return void */ public function config(){ $uid = Request()->get("uid" , 0); $config = [ "app_id" => "開放平臺第三方平臺 APPID", "secret" => "開放平臺第三方平臺 Secret", "token" => "開放平臺第三方平臺 Token", "aes_key" => "開放平臺第三方平臺 AES Key" ]; $openPlatform = Factory::openPlatform($config); $url = $openPlatform->getPreAuthorizationUrl("http://qgcloud.capsui.com/public/index/wxopen/wxcallback?uid=" . $uid); $this->redirect($url); }
授權回調(注意:掃碼確認授權后他第一次回調不會帶uid參數,)
引入 use EasyWeChatOpenPlatformServerGuard;
/** * 開發平臺授權回調 * * @return void */ public function wxcallback(){ // 這個表是記錄授權成功的 //$Wxpublic = new Wxpublic; // 這個表是記錄授權成功后傳過來所屬uid商城綁定appid //$ShopConfig = new ShopConfig; $get = Request()->param(); $config = [ "app_id" => "開放平臺第三方平臺 APPID", "secret" => "開放平臺第三方平臺 Secret", "token" => "開放平臺第三方平臺 Token", "aes_key" => "開放平臺第三方平臺 AES Key" ]; $openPlatform = Factory::openPlatform($config); $server = $openPlatform->server; // 處理授權成功事件-第一次回調 // 閉包方法!里面調用外面的方法請在use里面填寫 $server->push(function ($message) use ($openPlatform /*, $Wxpublic*/) { $authCode = $message["AuthorizationCode"]; $res = $openPlatform->handleAuthorize($authCode); if($res["authorization_info"]["authorizer_refresh_token"]){ //授權成功記錄到數據庫 //$Wxpublic->insert(["appid" => $res["authorization_info"]["authorizer_appid"] , "createtime" => time()]); } }, Guard::EVENT_AUTHORIZED); // 處理授權取消事件-第一次回調 // 閉包方法!里面調用外面的方法請在use里面填寫 $server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) { //處理數據庫邏輯 //$Wxpublic::appid($message["AppId"])->delete(); //$ShopConfig::appid($message["AppId"])->update(["token" => ""]); }, Guard::EVENT_UNAUTHORIZED); // 第二次回調會帶一個授權code和自定義參數商城id(uid) if(isset($get["auth_code"]) && isset($get["uid"])){ $res = $openPlatform->handleAuthorize($get["auth_code"]); $appid = $res["authorization_info"]["authorizer_appid"]; //數據庫邏輯 //$isConfig = $Wxpublic::appid($appid)->count(); //if($isConfig){ //$add = $ShopConfig->where("uid" , $get["uid"])->update(["token" => $appid]); //} } return $server->serve(); }第三方平臺 網頁授權&微信JSSDK初始化簽名生成
/** * 網頁授權調起 * * @return void */ public function htmlAccess(){ $appid = Request()->get("appid" , 0); $config = [ "app_id" => "開放平臺第三方平臺 APPID", "secret" => "開放平臺第三方平臺 Secret", "token" => "開放平臺第三方平臺 Token", "aes_key" => "開放平臺第三方平臺 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; // 回調授權地址 $url = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid"; $response = $officialAccount->oauth->scopes(["snsapi_userinfo"])->redirect($url)->send(); }
網頁授權回調方法
/** * 網頁授權回調 * * @return void */ public function callbackOpenid(){ $appid = Request()->get("appid" , null); $config = [ "app_id" => "開放平臺第三方平臺 APPID", "secret" => "開放平臺第三方平臺 Secret", "token" => "開放平臺第三方平臺 Token", "aes_key" => "開放平臺第三方平臺 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(); // 注意 這里我是帶參數跳轉到其他TP5項目里面再用緩存處理一下 $url = "http://quguoshop.capsui.com/public/wxoauthCallback?data=" . json_encode($user->toArray()) . "&token=" . $shopInfo["id"] . "&wxconfig=" . $wxconfig; $this->redirect($url); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28747.html
摘要:最近搞微信第三方登錄,搞蒙圈了。當你把服務號綁定到開放平臺之后,網頁授權返回的數據會多一個,同一個微信賬號在同一個開放平臺賬號下的是一致的。 最近搞微信第三方登錄,搞蒙圈了。 我們的業務有兩個場景需要使用微信第三方登錄:1、APP 第三方登錄2、H5網頁第三方登錄,具體流程:用戶微信端收到一個二維碼--->掃碼后同意微信授權-->綁定手機號碼 一開始糾結著是不是需要申請公眾號,找了個專...
摘要:寫在前面本周剛在項目中實現了微信第三方網站掃碼登錄。準備與注意事項微信公眾平臺跟微信開放平臺是兩個不同的平臺,別搞混了。參數在微信開放平臺中查看。 寫在前面 本周剛在項目中實現了微信第三方網站掃碼登錄。因為第一次寫相關項目,所以遇到了很多坑。所以寫這篇文章是希望像我之前那樣的小白也能從容的開發,不要浪費無謂的時間,這篇文章盡量寫的詳細簡單。準備與注意事項 微信公眾平臺跟微信開放平臺是...
摘要:本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。它的特點就是通過客戶端的后臺服務器,與服務提供商的認證服務器進行互動能夠滿足絕大多數開放平臺認證授權的需求。 本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。 什么是開放平臺 通過開放自己平臺產品服務的各種API接口,讓其他第三方開發者在開發應用時根據需求直接調用,例如微信登錄、QQ登錄、微信支付、微博登錄...
摘要:本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。它的特點就是通過客戶端的后臺服務器,與服務提供商的認證服務器進行互動能夠滿足絕大多數開放平臺認證授權的需求。 本文單純從簡單的技術實現來講,不涉及開放平臺的多維度的運營理念。 什么是開放平臺 通過開放自己平臺產品服務的各種API接口,讓其他第三方開發者在開發應用時根據需求直接調用,例如微信登錄、QQ登錄、微信支付、微博登錄...
閱讀 2102·2021-11-19 09:58
閱讀 1701·2021-11-15 11:36
閱讀 2867·2019-08-30 15:54
閱讀 3386·2019-08-29 15:07
閱讀 2759·2019-08-26 11:47
閱讀 2805·2019-08-26 10:11
閱讀 2496·2019-08-23 18:22
閱讀 2744·2019-08-23 17:58