"Hedef besleme salt okunur"

1 Cevap php

PHP bazı Google Analytics hesabı için tüm profilleri almaya çalışıyorum. Ben (cURL adaptör ile, ama aynı zamanda Soket ile denedim) ARMUT gelen HTTP_Request2 sınıfını kullanarak yaşıyorum ve ben "Hedef besleme salt okunur" hata ben veri almaya çalıştığınızda https://www.google.com/analytics/feeds/accounts/default elde tutmak

Ben ClientLogin auth yöntemi kullanıyorum ve bildiğim kadarıyla gördüğünüz gibi doğru Yetkilendirme başlık (I gönderiliyor başlıkları için test etmek için gözlemci sınıfını kullandım) her API isteği ile gönderilir.

Burada (soyulmuş, test sürümü) kullanın koddur:

require 'HTTP/Request2.php';


class GA {

    protected $email;
    protected $passwd;
    protected $auth_code;

    public function __construct($email = '', $passwd = '') {
        $this->email = $email;
        $this->passwd = $passwd;
    }

    public function authorize($email = '', $password = '', $force = false) {

        if (!$force and !empty($this->auth_code) and $email == $this->email and $password == $this->passwd) {
            return true;
        }

        unset($this->auth_code);

        !empty($email) or $email = $this->email;
        !empty($password) or $password = $this->passwd;

        if (empty($email) or empty($password)) {
            return false;
        }

        try {

            $response = $this->post(
                'https://www.google.com/accounts/ClientLogin',
                array(
                    'accountType' => 'GOOGLE',
                    'Email' => $this->email = $email,
                    'Passwd' => $this->passwd = $password,
                    'service' => 'analytics'
                )
            );

            if ($response->getStatus() == 200 and preg_match('/(?:^|[\n\r])Auth=(.*?)(?:[\n\r]|$)/', $response->getBody(), $match)) {

                $this->auth_code = $match[1];
                                    echo $this->auth_code;
                return true;
            }

        } catch (HTTP_Request2_Exception $e) {
            return false;
        }
    }

    public function call($url, array $params = array(), array $headers = array()) {

        if (!$this->auth_code && !$this->authorize($this->email, $this->passwd, true)) {
            return false;
        }

        $headers['Authorization'] = 'GoogleLogin auth=' . $this->auth_code;

        return $this->post($url, $params, $headers);
    }

    protected function post($url, array $params = array(), array $headers = array()) {

        $headers['GData-Version'] = '2';

        $request = new HTTP_Request2($url);
        $request->setAdapter('curl');
        $request->setConfig('ssl_verify_peer', false);
        $request->setHeader($headers);
        $request->setMethod(HTTP_Request2::METHOD_POST);
        $request->addPostParameter($params);

        return $request->send();
    }
}

$ga = new GA('*********@gmail.com', '*********');

var_dump($ga->call('https://www.google.com/analytics/feeds/accounts/default'));

Şimdiden teşekkürler!

1 Cevap

https://www.google.com/analytics/feeds/accounts/default must ulaşılabilir yalak GET yöntemi: Benim kendi soruyu yanıtlamak için. Benim kod her zaman kullanarak POST. Edildi