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!