成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

thinkphp5.1 easywechat4 微信第三方開放平臺

tomlingtm / 2060人閱讀

摘要:需求描述當前商城標識授權(quán)第三方開發(fā)平臺網(wǎng)頁授權(quán)成功后跳轉(zhuǎn)到另一個商城項目鏈接并帶上當前微信用戶信息和微信初始化驗證簽名第三方平臺授權(quán)安裝引用創(chuàng)建一個跳轉(zhuǎn)到微信掃二維碼授權(quán)頁面開發(fā)平臺授權(quán)跳轉(zhuǎn)跳轉(zhuǎn)方法為什么我不寫到上一個方法呢因為微信

需求描述

當前商城(uid標識)授權(quán)第三方開發(fā)平臺.

網(wǎng)頁授權(quán)成功后跳轉(zhuǎn)到另一個商城項目鏈接并帶上當前微信用戶信息和微信初始化驗證簽名.

第三方平臺授權(quán)
安裝easywechat4
$ composer require overtrue/wechat:~4.0 -vvv
引用
use EasyWeChatFactory;
創(chuàng)建一個跳轉(zhuǎn)到微信掃二維碼授權(quán)頁面
/**
 * 開發(fā)平臺授權(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)方法(為什么我不寫到上一個方法呢 因為微信要求同一個地址)
/**
 * 開發(fā)平臺跳轉(zhuǎn)授權(quán)掃碼頁
 *
 * @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);
}
授權(quán)回調(diào)(注意:掃碼確認授權(quán)后他第一次回調(diào)不會帶uid參數(shù),)
引入 
use EasyWeChatOpenPlatformServerGuard;
/**
 * 開發(fā)平臺授權(quán)回調(diào)
 *
 * @return void
 */
public function wxcallback(){
    // 這個表是記錄授權(quán)成功的
    //$Wxpublic   = new Wxpublic;
    // 這個表是記錄授權(quán)成功后傳過來所屬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;

    
    // 處理授權(quán)成功事件-第一次回調(diào)
    // 閉包方法!里面調(diào)用外面的方法請在use里面填寫
    $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ù)庫
            //$Wxpublic->insert(["appid" => $res["authorization_info"]["authorizer_appid"] , "createtime" => time()]);
        }

    }, Guard::EVENT_AUTHORIZED);

    // 處理授權(quán)取消事件-第一次回調(diào)
    // 閉包方法!里面調(diào)用外面的方法請在use里面填寫
    $server->push(function ($message) use(/*$Wxpublic , $ShopConfig*/) {
        //處理數(shù)據(jù)庫邏輯
        //$Wxpublic::appid($message["AppId"])->delete();
        //$ShopConfig::appid($message["AppId"])->update(["token" => ""]);
    }, Guard::EVENT_UNAUTHORIZED);
    
    // 第二次回調(diào)會帶一個授權(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ù)庫邏輯
        //$isConfig = $Wxpublic::appid($appid)->count();
        
        //if($isConfig){
        //$add = $ShopConfig->where("uid" , $get["uid"])->update(["token" => $appid]);
        //}
    }

    return $server->serve();
}
第三方平臺 網(wǎng)頁授權(quán)&微信JSSDK初始化簽名生成
/**
 * 網(wǎng)頁授權(quán)調(diào)起
 *
 * @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;
    
    // 回調(diào)授權(quán)地址
    $url      = "http://qgcloud.capsui.com/public/index/wxopen/callbackOpenid";
    $response = $officialAccount->oauth->scopes(["snsapi_userinfo"])->redirect($url)->send();

}
網(wǎng)頁授權(quán)回調(diào)方法
/**
 * 網(wǎng)頁授權(quán)回調(diào)
 *
 * @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();
    
    // 注意 這里我是帶參數(shù)跳轉(zhuǎn)到其他TP5項目里面再用緩存處理一下
    $url = "http://quguoshop.capsui.com/public/wxoauthCallback?data=" . json_encode($user->toArray()) . "&token=" . $shopInfo["id"] . "&wxconfig=" . $wxconfig;
    $this->redirect($url);
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28747.html

相關(guān)文章

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

    摘要:最近搞微信第三方登錄,搞蒙圈了。當你把服務(wù)號綁定到開放平臺之后,網(wǎng)頁授權(quán)返回的數(shù)據(jù)會多一個,同一個微信賬號在同一個開放平臺賬號下的是一致的。 最近搞微信第三方登錄,搞蒙圈了。 我們的業(yè)務(wù)有兩個場景需要使用微信第三方登錄:1、APP 第三方登錄2、H5網(wǎng)頁第三方登錄,具體流程:用戶微信端收到一個二維碼--->掃碼后同意微信授權(quán)-->綁定手機號碼 一開始糾結(jié)著是不是需要申請公眾號,找了個專...

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

    摘要:寫在前面本周剛在項目中實現(xiàn)了微信第三方網(wǎng)站掃碼登錄。準備與注意事項微信公眾平臺跟微信開放平臺是兩個不同的平臺,別搞混了。參數(shù)在微信開放平臺中查看。 寫在前面 本周剛在項目中實現(xiàn)了微信第三方網(wǎng)站掃碼登錄。因為第一次寫相關(guān)項目,所以遇到了很多坑。所以寫這篇文章是希望像我之前那樣的小白也能從容的開發(fā),不要浪費無謂的時間,這篇文章盡量寫的詳細簡單。準備與注意事項 微信公眾平臺跟微信開放平臺是...

    lemanli 評論0 收藏0
  • 說說微信掃碼登錄

    摘要:詳情接口我們這里主要講的是網(wǎng)站應(yīng)用,網(wǎng)站應(yīng)用微信登錄是基于協(xié)議標準構(gòu)建的微信授權(quán)登錄系統(tǒng)即上面的協(xié)議。在微信客戶端授權(quán)登錄獲取用戶信息的可以查看。微信授權(quán)登錄目前支持模式,適用于擁有端的應(yīng)用授權(quán)。 一、OAuth2.0 OAuth(開放授權(quán))是一個開放標準,允許用戶讓第三方應(yīng)用訪問該用戶在某一網(wǎng)站上存儲的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應(yīng)用。 ...

    Jokcy 評論0 收藏0
  • 基于oauth 2.0 實現(xiàn)三方開放平臺

    摘要:本文單純從簡單的技術(shù)實現(xiàn)來講,不涉及開放平臺的多維度的運營理念。它的特點就是通過客戶端的后臺服務(wù)器,與服務(wù)提供商的認證服務(wù)器進行互動能夠滿足絕大多數(shù)開放平臺認證授權(quán)的需求。 本文單純從簡單的技術(shù)實現(xiàn)來講,不涉及開放平臺的多維度的運營理念。 什么是開放平臺 通過開放自己平臺產(chǎn)品服務(wù)的各種API接口,讓其他第三方開發(fā)者在開發(fā)應(yīng)用時根據(jù)需求直接調(diào)用,例如微信登錄、QQ登錄、微信支付、微博登錄...

    Simon 評論0 收藏0
  • 基于oauth 2.0 實現(xiàn)三方開放平臺

    摘要:本文單純從簡單的技術(shù)實現(xiàn)來講,不涉及開放平臺的多維度的運營理念。它的特點就是通過客戶端的后臺服務(wù)器,與服務(wù)提供商的認證服務(wù)器進行互動能夠滿足絕大多數(shù)開放平臺認證授權(quán)的需求。 本文單純從簡單的技術(shù)實現(xiàn)來講,不涉及開放平臺的多維度的運營理念。 什么是開放平臺 通過開放自己平臺產(chǎn)品服務(wù)的各種API接口,讓其他第三方開發(fā)者在開發(fā)應(yīng)用時根據(jù)需求直接調(diào)用,例如微信登錄、QQ登錄、微信支付、微博登錄...

    xiaodao 評論0 收藏0

發(fā)表評論

0條評論

tomlingtm

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<