"구글 Analytics API 시작하기"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-== 참고 자료 == +==참고==))
 
(사용자 3명의 중간 판 45개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;구글 Analytics API 시작하기
;구글 Analytics API 시작하기
;구글 애널리틱스 API 튜토리얼
;구글 애널리틱스 API 튜토리얼
;HelloAnalytics


==목적==
==목적 / 목표==
*정기예약작업(crontab)으로 Analytics 데이터를 수집하여 MySQL에 보관
*정기예약작업(crontab)으로 Analytics 데이터를 수집하여 MySQL에 보관
*PHP 라이브러리를 이용하여 기본 프로그램 작성
:자바, 파이썬, PHP, 자바스크립트 라이브러리가 제공되는데 여기서는 PHP로 한다.


==사전 작업==
==사전 작업==
*[[구글 Analytics]] 사용해보기
*[[구글 Analytics]] 사용해보기
*[[구글 API 시작하기]]


==방법==
==API 활성화==
*https://console.developers.google.com/project 접속
*https://console.developers.google.com/project 접속
*API Project 클릭
*API Project 클릭
*왼쪽 메뉴(Sidebar)에서 APIs & auth 아래 APIs 클릭
*왼쪽 메뉴(Sidebar)에서 APIs 클릭
*Analytics API 클릭
*Analytics API 클릭
*[Enable API] 버튼 클릭
*[Enable API] 버튼 클릭
:"Enabled Analytics API"
:"Enabled Analytics API"
==P12 키 생성·업로드==
*왼쪽 메뉴(Sidebar)에서 Credentials 클릭
*왼쪽 메뉴(Sidebar)에서 Credentials 클릭
*OAuth 아래의 [Create new Client ID] 버튼 클릭
*[Generate new P12 key] 버튼 클릭
*Application type 선택: (O) Service account<ref>Web application, Service account, Installed application 중 선택. 여기서는 필자의 목적에 맞게 Service account를 선택함</ref> --- [Create Client ID] 버튼 클릭
:API Project-7bq7391w37g9.p12 파일 다운로드됨
*"New Public/Private key pair generated" 창과 함께 json 파일이 다운로드됨 --- [Okay, got it]
*파일명을 client_secrets.p12으로 변경
:화면에 표시되는 내용은...
*서버에 업로드
{| class='wikitable'
<source lang='console'>
|+Service Account
[root@zetawiki ~]# ll *.p12
|-
-rw-r--r-- 1 root root 1732 Jun 22 22:29 client_secrets.p12
| Client ID || 871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma.apps.googleusercontent.com
</source>
|-
 
| Email address || 871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma@developer.gserviceaccount.com
==예제 다운로드==
|-
<source lang='console'>
| Certificate fingerprints || tl28322d248g14q2kxt37d3253981ap8l878dyy3
[root@zetawiki ~]# wget https://developers.google.com/analytics/resources/samples/service-php.txt
|}
--2015-06-22 23:07:25--  https://developers.google.com/analytics/resources/samples/service-php.txt
:"API Project-6bd80f24cead.json" 파일의 내용은...
Resolving developers.google.com... 58.123.102.118, 58.123.102.98, 58.123.102.119, ...
<source lang='javascript'>
Connecting to developers.google.com|58.123.102.118|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3353 (3.3K) [text/plain]
Saving to: “service-php.txt”
 
100%[================================================>] 3,353      --.-K/s  in 0s     
 
2015-06-22 23:07:26 (12.4 MB/s) - “service-php.txt” saved [3353/3353]
</source>
<source lang='console'>
[root@zetawiki ~]# head service-php.txt
<?php
 
function getService()
{
{
   "private_key_id": "tl28322d248g14q2kxt37d3253981ap8l878dyy3",
   // Creates and returns the Analytics service object.
   "private_key": "-----BEGIN PRIVATE KEY-----\nMIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM86vrJUfFHuzcqW\nByp+w+nWAI6iFzpaYiLTaXp1pjrRLmwAWfO094y1qmaO7vvCEFt06yGb1v5VkNg7\n2mVdTzpdCdYnpv2q1wUQ6x2O2p4jISgrocvigQXvGdsDA1HReNXRyV1kxZJbwA81\nuxH9edFCbCZW9/HMaEN0IhGm6iebAgMBAAECgYAVOTb+nJh+66436VWijIkUEc7M\nzN0EJO2YE37iA9qae4H9nauYwhf4WUKybkEbl6yFMVxDfOpv8eN7weWELCJI8LxR\nqTiw/f+BQnHyqSrvaY8x8siD7Z+1ut6ZCmIMwbRAx/OqVe0R23pfpuSblvgHYuW/\nI5TNxKytQo9HsbsmQQJBAOyNbA3GMj4QLwdQw/1EwnLLY/255Zrplgtv19PKrZ+N\nPvOb7v5dLzDaX0LaMnxqFK77WSf0GwO8ZWgfnkHZ3EUCQQDgRC4V0l6Lk0xaCJxF\ns27kkIWNnwYVaYpWOeHjbq5tE3dHlMgLzurtZ9s6a5w9faT4PcSW6Yv4ybIjVL+j\nM2JfAkBR7WEhHCXGjQBcvkJC84+NBphpBftZvdDzwRa1CZs8iUTmRnltq4RunRMl\nKkEWCf+D4xWr2sWIc7WDbH/5OqUpAkEAqa+MuyAgPzVlWN4Y97gLWM9s7bn8DWl8\nrT9AhifxvEA1SSjur9iQ8q5ZNvvDDNerYdTCkXkGWmip64etNFuluwJANo+7AVcO\nntq82SIVLV/MrTO1ZpIlIM3dJSPmFCBGtYWckr7uwi5QZp7VjZFdFcsh84LqVQdC\n3tDhhDau9E9+9w\u003d\u003d\n-----END PRIVATE KEY-----\n",
 
   "client_email": "871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma@developer.gserviceaccount.com",
  // Load the Google API PHP Client Library.
  "client_id": "871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma.apps.googleusercontent.com",
   require_once 'google-api-php-client/src/Google/autoload.php';
  "type": "service_account"
 
}
  // Use the developers console and replace the values with your
</source>
 
==예제 복제·수정==
* service-php.txt를 HelloAnalytics.php로 복사
* 라이브러리 위치 수정
* API용 구글 이메일, p12 파일명 입력
<source lang='console'>
[root@zetawiki ~]# cp service-php.txt HelloAnalytics.php
[root@zetawiki ~]# vi HelloAnalytics.php
</source>
<source lang='php'>
<?php
 
function getService()
{
  // Creates and returns the Analytics service object.
 
  // Load the Google API PHP Client Library.
  #### require_once 'google-api-php-client/src/Google/autoload.php';
  require_once 'Google/autoload.php';
 
  // Use the developers console and replace the values with your
  // service account email, and relative location of your key file.
  #### $service_account_email = '<Replace with your service account email address.>';
  #### $key_file_location = '<Replace with /path/to/generated/client_secrets.p12>';
   $service_account_email = '871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma.apps.googleusercontent.com';
  $key_file_location = 'client_secrets.p12';
... (생략)
</source>
 
==테스트 (실패)==
<source lang='console'>
[root@zetawiki ~]# php HelloAnalytics.php
PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/analytics/v3/management/accounts: (403) User does not have any Google Analytics account.' in /usr/share/php/vendor/Google/Http/REST.php:110
Stack trace:
#0 /usr/share/php/vendor/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
... (생략)
</source>
 
==Analytics에 API 이메일 계정 등록==
*http://www.google.com/analytics/ 접속
*[로그인] 클릭
*[관리] 탭 선택
*[사용자 관리] 메뉴 클릭
*다음 사용자에게 권한 추가: 871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma.apps.googleusercontent.com<ref>계정 권한: 읽고 분석하기</ref><ref>자신의 구글 API 콘솔 Credentials에 있는 이메일 주소 입력</ref>
*[추가] 버튼 클릭
 
==테스트 2 (성공)==
<source lang='console'>
[root@zetawiki ~]# php HelloAnalytics.php
First view (profile) found: zetawiki.com
Total sessions: 7
</source>
</source>


==같이 보기==
==같이 보기==
*[[구글 Analytics]]
*[[구글 Analytics]]
*[[구글 API 시작하기]]


==주석==
==주석==
<references/>
<references/>


==참고 자료==
==참고==
*https://developers.google.com/analytics/solutions/articles/hello-analytics-api Tutorial: Hello Analytics API
*https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-php
*https://developers.google.com/api-client-library/php/ Google APIs Client Library for PHP
*http://stackoverflow.com/questions/12837748/analytics-google-api-error-403-user-does-not-have-any-google-analytics-account
*https://github.com/google/google-api-php-client A PHP client library for accessing Google APIs
*http://qiita.com/toru-om/items/6e7fb2881e97a542c74a


[[분류: 구글]]
[[분류: 구글 API]]
[[분류: 튜토리얼]]
[[분류: 구글 애널리틱스]]

2017년 6월 27일 (화) 22:26 기준 최신판

Google Analytics API tutorial
구글 Analytics API 시작하기
구글 애널리틱스 API 튜토리얼
HelloAnalytics

1 목적 / 목표[ | ]

  • 정기예약작업(crontab)으로 Analytics 데이터를 수집하여 MySQL에 보관
  • PHP 라이브러리를 이용하여 기본 프로그램 작성
자바, 파이썬, PHP, 자바스크립트 라이브러리가 제공되는데 여기서는 PHP로 한다.

2 사전 작업[ | ]

3 API 활성화[ | ]

"Enabled Analytics API"

4 P12 키 생성·업로드[ | ]

  • 왼쪽 메뉴(Sidebar)에서 Credentials 클릭
  • [Generate new P12 key] 버튼 클릭
API Project-7bq7391w37g9.p12 파일 다운로드됨
  • 파일명을 client_secrets.p12으로 변경
  • 서버에 업로드
[root@zetawiki ~]# ll *.p12
-rw-r--r-- 1 root root 1732 Jun 22 22:29 client_secrets.p12

5 예제 다운로드[ | ]

[root@zetawiki ~]# wget https://developers.google.com/analytics/resources/samples/service-php.txt
--2015-06-22 23:07:25--  https://developers.google.com/analytics/resources/samples/service-php.txt
Resolving developers.google.com... 58.123.102.118, 58.123.102.98, 58.123.102.119, ...
Connecting to developers.google.com|58.123.102.118|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3353 (3.3K) [text/plain]
Saving to: “service-php.txt”

100%[================================================>] 3,353       --.-K/s   in 0s      

2015-06-22 23:07:26 (12.4 MB/s) - “service-php.txt” saved [3353/3353]
[root@zetawiki ~]# head service-php.txt
<?php

function getService()
{
  // Creates and returns the Analytics service object.

  // Load the Google API PHP Client Library.
  require_once 'google-api-php-client/src/Google/autoload.php';

  // Use the developers console and replace the values with your

6 예제 복제·수정[ | ]

  • service-php.txt를 HelloAnalytics.php로 복사
  • 라이브러리 위치 수정
  • API용 구글 이메일, p12 파일명 입력
[root@zetawiki ~]# cp service-php.txt HelloAnalytics.php
[root@zetawiki ~]# vi HelloAnalytics.php
<?php

function getService()
{
  // Creates and returns the Analytics service object.

  // Load the Google API PHP Client Library.
  #### require_once 'google-api-php-client/src/Google/autoload.php';
  require_once 'Google/autoload.php';

  // Use the developers console and replace the values with your
  // service account email, and relative location of your key file.
  #### $service_account_email = '<Replace with your service account email address.>';
  #### $key_file_location = '<Replace with /path/to/generated/client_secrets.p12>';
  $service_account_email = '871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma.apps.googleusercontent.com';
  $key_file_location = 'client_secrets.p12';
... (생략)

7 테스트 (실패)[ | ]

[root@zetawiki ~]# php HelloAnalytics.php
PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/analytics/v3/management/accounts: (403) User does not have any Google Analytics account.' in /usr/share/php/vendor/Google/Http/REST.php:110
Stack trace:
#0 /usr/share/php/vendor/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
... (생략)

8 Analytics에 API 이메일 계정 등록[ | ]

  • http://www.google.com/analytics/ 접속
  • [로그인] 클릭
  • [관리] 탭 선택
  • [사용자 관리] 메뉴 클릭
  • 다음 사용자에게 권한 추가: 871045965516-m6pxhmgmk0f6l6cdeq5alsbwh9own7ma.apps.googleusercontent.com[1][2]
  • [추가] 버튼 클릭

9 테스트 2 (성공)[ | ]

[root@zetawiki ~]# php HelloAnalytics.php
First view (profile) found: zetawiki.com
Total sessions: 7

10 같이 보기[ | ]

11 주석[ | ]

  1. 계정 권한: 읽고 분석하기
  2. 자신의 구글 API 콘솔 Credentials에 있는 이메일 주소 입력

12 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}