0

我的目标是订阅我的应用程序并获取标签 love 的所有数据

class IndexController extends App_Controller_Default

{ 公共函数 indexAction() { $data = $this->_getSubscriptionTag(); Zend_Debug::dump($data); }

public function realtimecallbackAction()
{
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);
    $allParams = $this->_getAllParams();
    $dataFile = ROOT_DIR.'/data.txt';
    file_put_contents($dataFile, implode(',',$_GET).implode(',',array_keys($_GET)));
    if(isset($_GET['hub_challenge'])){
        $challenge = $_GET['hub_challenge'];
        $file = ROOT_DIR.'/json.txt';
        $json = $this->_challenge($challenge);
        file_put_contents($file, $json);
    }
    $request = $this->getRequest();
    if($request->isPost()){
        $filePostData = ROOT_DIR.'/postdata.txt';
        $postdata = file_get_contents("php://input");
        file_put_contents($filePostData, $postdata, FILE_APPEND | LOCK_EX);
    }
}

protected function _getSubscriptionTag($verifyToken='')
{
    $config = array(
        'adapter'   => 'Zend_Http_Client_Adapter_Curl',
        'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
    );
    $uri = 'https://api.instagram.com/v1/subscriptions/';
    $request = $this->getRequest();
    $callbackUrl= $request->getScheme().'://'.$request->getHttpHost().$request->getBaseUrl().'/index/realtimecallback';
    $client = new Zend_Http_Client();
    $client->setUri($uri);
    $client->setConfig($config);
    $client->setMethod(Zend_Http_Client::POST);
    $client->setParameterPost('client_id', 'my_id');
    $client->setParameterPost('client_secret', 'my_secret');
    $client->setParameterPost('object', 'tag');
    $client->setParameterPost('aspect', 'media');
    $client->setParameterPost('object_id', 'love');
    $client->setParameterPost('verify_token', $verifyToken);
    $client->setParameterPost('callback_url', $callbackUrl);
    $response = $client->request();
    $httpCode = $response->getStatus();
    $httpHeaders = $response->getHeaders();
    $httpBody = $response->getBody();
    $data = array();
    try{
        $data = Zend_Json_Decoder::decode($httpBody,Zend_Json::TYPE_ARRAY);
    }
    catch(Exception $e){
        $data['error_type'] = 'malformed json';
        $data['error_message'] = $e->getMessage();
    }
    var_dump($client->getLastRequest());
    return $data;
}

protected function _challenge($challenge)
{
    $config = array(
        'adapter'   => 'Zend_Http_Client_Adapter_Curl',
        'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
    );
    $uri = 'https://api.instagram.com/v1/subscriptions/';
    $client = new Zend_Http_Client();
    $client->setUri($uri);
    $client->setConfig($config);
    $client->setParameterGet('challenge', $challenge);
    $client->setParameterGet('client_id', 'my_id');
    $client->setParameterGet('client_secret', 'my_secret');
    $response = $client->request();
    $httpCode = $response->getStatus();
    $httpHeaders = $response->getHeaders();
    $httpBody = $response->getBody();
    return $httpBody;

}

}

在 json.txt 文件中,我得到 {"meta":{"code":200},"data":[]} 如果我提出请求 https://api.instagram.com/v1/subscriptions?client_secret=CLIENT -SECRET&client_id=CLIENT-ID 我得到了同样的我不知道该转向哪条路:(你能帮我吗?

我也试过 $client->setParameterGet('verify_token', $challenge); 但它不起作用:(

4

1 回答 1

0

:)

public function realtimeAction()
{ 
    $file = ROOT_DIR.'/json.txt';
    $data = $this->_getSubscriptionTag();
    $request = $this->getRequest();
    if($request->isPost()){
        $filePostData = ROOT_DIR.'/postdata.txt';
        $postdata = file_get_contents("php://input");
        file_put_contents($filePostData, $postdata, FILE_APPEND | LOCK_EX);
    }
    Zend_Debug::dump($data);
}

public function realtimecallbackAction()
{
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);
    if(isset($_GET['hub_challenge'])){
        $challenge = $_GET['hub_challenge'];
        echo $challenge;
        exit;
    }

}

非常感谢 http://thegregthompson.com/instagram-real-time-api-php/

于 2013-02-15T13:07:19.700 回答