成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

thinkphp5.1 easywechat4 微信第三方開(kāi)放平臺(tái)

tomlingtm / 2122人閱讀

摘要:需求描述當(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

相關(guān)文章

  • 微信三方登錄(PC網(wǎng)站、APP、移動(dòng)網(wǎng)頁(yè))

    摘要:最近搞微信第三方登錄,搞蒙圈了。當(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è)專...

    RobinQu 評(píng)論0 收藏0
  • python實(shí)現(xiàn)微信三方網(wǎng)站掃碼登錄(Django)

    摘要:寫(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)是...

    lemanli 評(píng)論0 收藏0
  • 說(shuō)說(shuō)微信掃碼登錄

    摘要:詳情接口我們這里主要講的是網(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)用。 ...

    Jokcy 評(píng)論0 收藏0
  • 基于oauth 2.0 實(shí)現(xiàn)三方開(kāi)放平臺(tái)

    摘要:本文單純從簡(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登錄、微信支付、微博登錄...

    Simon 評(píng)論0 收藏0
  • 基于oauth 2.0 實(shí)現(xiàn)三方開(kāi)放平臺(tái)

    摘要:本文單純從簡(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登錄、微信支付、微博登錄...

    xiaodao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<