0

내 CMS를 통해 게시 된 기사의 페이지 뷰 수를 가져 오기위한 간단한 스크립트를 작성하려고합니다. 원하는 결과를 신속하게 반환하는 Google 애널리틱스 API 쿼리 작성 도구를 사용하여 내 검색어를 쉽게 만들었습니다. 웹 서버의 예약 된 작업은 하루에 한 번 쿼리를 실행하고 업데이트 및 페이지 뷰 수를 계산합니다.인증 오류 (oAuth를 사용하지 않음) http를 통해 Google Analytics API에 액세스하려고 시도합니다.

페이지 뷰만 있기 때문에 전체 oAuth 프로세스를 거칠 필요가 없다고 생각합니다. 이 Google 계정에는 하나의 웹 속성과 프로필이 하나뿐이므로이를 파생시킬 루틴이 필요하지 않습니다.

앱을 등록하고 API 키를 만들었습니다. 이 프로필에 Google 애널리틱스를 사용하도록 설정했습니다. API를 읽은 것을 토대로이 키를 http 매개 변수로 전달하여 쿼리를 적절하게 인증 할 수 있다고 생각합니다.

http를 통해 쿼리를 실행하면 인증 오류 (401)가 발생합니다. 나는이 많은 사례를 봤 한

https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A[MY ID]&metrics=ga%3Apageviews&start-date=2012-08-09&end-date=2012-08-23&max-results=50&key=[MY API KEY] 

, 그러나 그들 모두는 매우 정교 (내 사용 사례에 필요) 인증 루틴을 구현 듯 : 쿼리는 아래에 포함되어 있습니다. 하지만 어쩌면 내가 뭔가를 놓친 것 같아.

미리 감사드립니다.

답변

1

사용이 예제를 좌절 :

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, true); 

$data = array(
    'accountType' => 'GOOGLE', 
    'Email' => $email, 
    'Passwd' => $password, 
    'service' => 'analytics', 
    'source' => '' 
); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

$auth = ''; 
if($info['http_code'] == 200) { 
    preg_match('/Auth=(.*)/', $output, $matches); 
    if(isset($matches[1])) { 
     $auth = $matches[1]; 
    } else { 
     throw new Exception('Login failed with message: ' . $output); 
    } 
} 

그리고 헤더에 권한 부여 전송 인증 토큰 후

:

$headers = array("Authorization: GoogleLogin auth=$auth"); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 
+1

혼자서는 의미가 없기 때문에 ** 미래의 링크는 ** 살아있는 것으로 보장되지 않으므로 혼자있는 링크는 잘못된 대답으로 간주됩니다 ([faq # deletion] 참조). [대답]의 필수 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 바람직합니다 (http://meta.stackexchange.com/q/8259). – j0k

+0

조언 해 주셔서 감사합니다. 나는 내 대답을 향상시켰다. – pirogtm

관련 문제