1. 程式人生 > >廣點通sdk接入

廣點通sdk接入

騰訊廣點通Marketing API接入Web行為資料

api思路:
(1)使用者點選騰訊推廣的廣告,同時生成隨機的 click_id,並追加到落地頁的url。
(2)落地頁的表單提交後,可以利用 API 將 click_id 和 轉化型別(ActionType) 一併上報給騰訊社交廣告
目的:經過騰訊社交廣告計算,將最終資料呈現在投放端(e.qq.com
開發流程:

  1. 上報模式的選擇:模式二授權充分
  2. 賬號準備:
    接入流程
    step1,step2傻瓜式操作即可。
    step3.4:

準備步驟

public function text(){
        $backurl="http://回撥的域名/Admin/Gdt/back";//應用裡面回撥的域名
        $result = urlencode($backurl);
        $url = 'https://developers.e.qq.com/oauth/authorize?client_id=你的client_id&redirect_uri='.$result.'&state=&scope=';
        header("Location:".$url);
    }

獲取access_token 和 refresh_token,存在時間限制

public function back(){
        //判斷是否含有code值
        $txapi    = M('txapi');
        $data     = $txapi->find();
        if(empty($data)){
            $action     = 1;//獲得新的 access_token 和 refresh_token
        }else{
            $time       = time();
            $edittime   = strtotime($data['t_Datetime']);//編輯時間
            $gaptime    = $time-$edittime;
            if($gaptime >= 86400 && $gaptime < 2592000){//24小時外
                $action = 0; //僅僅獲得新的access_token
            }elseif($gaptime >= 2592000){//1個月外
                $action = 1;//獲得新的 access_token和refresh_token
            }else{
                $action = 2;//不變
            } 
        }
        $backurl="http://回撥的域名/Admin/Gdt/back";
        $result = urlencode($backurl);
        if($action == 0){
            //獲取token值
            $url ="https://api.e.qq.com/oauth/token?client_id=你的client_id&client_secret=你的client_secret&grant_type=refresh_token&refresh_token=".$data['t_Refresh_Token'];       
            $curl = curl_init(); // 啟動一個CURL會話
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HEADER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 從證書中檢查SSL加密演算法是否存在
            $tmpInfo = curl_exec($curl);     //返回api的json物件
            curl_close($curl); //關閉URL請求
            $dataRet=json_decode($tmpInfo,true);
            $info['t_Access_Token']  = $dataRet['data']['access_token'];
            $info['t_Refresh_Token'] = $dataRet['data']['refresh_token'];
            $info['t_User_Action_Set_Id'] = '';
            $info['t_Datetime'] = date("Y-m-d H:i:s");
            $info['t_Id'] = $data['t_Id'];
            $result = $txapi->save($info);
            $this->getsource();
            echo "編輯ok";
        }elseif ($action == 1){
            //獲取token值
            $authorization_code =$_GET['authorization_code'];
            $url ="https://api.e.qq.com/oauth/token?client_id=你的client_id&client_secret=你的client_secret&grant_type=authorization_code&authorization_code=".$authorization_code."&redirect_uri=".$result;       
            $curl = curl_init(); // 啟動一個CURL會話
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HEADER, 0);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);  // 從證書中檢查SSL加密演算法是否存在
            $tmpInfo = curl_exec($curl);     //返回api的json物件
            //關閉URL請求
            curl_close($curl);
            $dataRet=json_decode($tmpInfo,true);
            $info['t_Authorization_Code'] = $authorization_code;
            $info['t_Access_Token']  = $dataRet['data']['access_token'];
            $info['t_Refresh_Token'] = $dataRet['data']['refresh_token'];
            $info['t_User_Action_Set_Id'] = '';
            $info['t_Datetime'] = date("Y-m-d H:i:s");
            $result = $txapi->add($info);
            $this->getsource();
            echo "新增ok";
        }else{
            //不變
            $this->getsource();
            echo "不變ok";
        }
    }

建立使用者行為資料來源

 public function setsource(){
            $txapi     = M('txapi');
            $data      = $txapi->find();
            $timestamp = time();
            $nonce     = rand();
            $url = "https://api.e.qq.com/v1.0/user_action_sets/add?access_token=".$data['t_Access_Token']."&timestamp=".$timestamp."&nonce=".$nonce;        
            $curl = curl_init(); // 啟動一個CURL會話
            $header=array(  
                "Accept: application/json",
                "Content-Type: application/json", 
            );
            //設定post資料
            $post_data = array(
                "account_id" => "你的account_id",
                "type" => "WEB",
                "name" => "測試哈哈",
                "description" => "胡胡是個小可愛"
            );

            curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查    
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 從證書中檢查SSL加密演算法是否存在
            curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬使用者使用的瀏覽器
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
            curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設定Referer
            curl_setopt($curl, CURLOPT_POST, 1); // 傳送一個常規的Post請求
            curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($post_data)); // Post提交的資料包
            curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定超時限制防止死迴圈
            curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的資訊以檔案流的形式返回
            curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
            $tmpInfo = curl_exec($curl); // 執行操作
            curl_close($curl); // 關閉CURL會話
            $dataRet=json_decode($tmpInfo,true);     
    }

獲取使用者行為資料來源

public function getsource(){
            $txapi     = M('txapi');
            $data      = $txapi->find();
            $timestamp = time();
            $nonce     = rand();
            $url ="https://api.e.qq.com/v1.0/user_action_sets/get?access_token=".$data['t_Access_Token'].
            "&timestamp=".$timestamp."&account_id=你的account_id&nonce=".$nonce;
            $curl = curl_init(); // 啟動一個CURL會話
            $header=array(  
                "Accept: application/json",
                "Content-Type: application/json;charset=utf-8",
            );
            curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查    
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 從證書中檢查SSL加密演算法是否存在
            curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬使用者使用的瀏覽器
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
            curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設定Referer
            curl_setopt($curl, CURLOPT_POST, 1); // 傳送一個常規的Post請求
            curl_setopt($curl, CURLOPT_POSTFIELDS); // Post提交的資料包
            curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定超時限制防止死迴圈
            curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的資訊以檔案流的形式返回
            curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
            $tmpInfo = curl_exec($curl); // 執行操作
            curl_close($curl); // 關閉CURL會話
            $dataRet=json_decode($tmpInfo,true);
            $reback['t_User_Action_Set_Id'] = $dataRet['data']['list'][0]['user_action_set_id'];
            $reback['t_Id'] = $data['t_Id'];
            $txapi->save($reback);
    }

上傳使用者行為資料

public function useraction(){
            $txapi     = M('txapi');
            $data      = $txapi->find();
            $timestamp = time();
            $nonce     = rand();
            $url = "https://api.e.qq.com/v1.0/user_actions/add?timestamp=".$timestamp."&access_token=".$data['t_Access_Token']."&nonce=".$nonce;
            $curl = curl_init(); // 啟動一個CURL會話
            $header=array(  
                 //"Accept: application/json",
                "Content-Type: application/json", 
            );
                    $post_data ='
                        {
                            "account_id":你的account_id,
                            "user_action_set_id":你的user_action_set_id,
                                "actions": 
                                [
                                    {
                                        "outer_action_id": "",
                                        "action_time":'.$timestamp.',
                                        "user_id":{
                                            "hash_imei":"f9efca36a3c30e1cf28170d86ecbf5e9"
                                        },
                                        "trace":{
                                            "click_id":"1"
                                        },
                                        "action_type":"RESERVATION"
                                    }
                                ]
                        }
                         ';

            curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查  
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 從證書中檢查SSL加密演算法是否存在
            curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬使用者使用的瀏覽器
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
            curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設定Referer
            curl_setopt($curl, CURLOPT_POST, 1); // 傳送一個常規的Post請求
            curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // Post提交的資料包
            curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定超時限制防止死迴圈
            curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的資訊以檔案流的形式返回
            curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
            $tmpInfo = curl_exec($curl); // 執行操作
            curl_close($curl); // 關閉CURL會話
            $dataRet=json_decode($tmpInfo,true);
            var_dump($dataRet);exit;
    }