2013-09-08 4 views
6

나는 nodejs를 사용하고 있으며 Google Analytics의 일부 데이터를 표시하려고합니다. 나는이 URL을 액세스 할 경우 내가 할, 그러나nodejs를 통해 Google Analytics에 액세스

https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXXX&start-date=2013-08-17&end-date=2013-09-15&metrics=ga%3Avisits&key={YOUR_API_KEY} 

:

{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}} 

가 어떻게 내 로그인을 전달할 수 있습니다 구글 API 탐색기에

, 내 데이터를 얻을이 URL을 발견했습니다 URL을 통해 내 데이터에 액세스 할 수 있습니까?

감사합니다.

+0

실제로 여기에 API 키를 넣으시겠습니까? '& key = {YOUR_API_KEY} ' – datasage

+0

예. 하지만 토큰이 필요한 것 같습니다. 요청을 사용하여 'https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXXX88&metrics=ga:visits&start-date=2013-08-17&end-date=2013-09-15&access_token= XXXXXXXX & access_type_token = 무기명 '이며 모든 것이 작동합니다. – sayam

+0

그러나 토큰을 새로 고치려고하면 https : //accounts.google.com/o/oauth2/token? client_secret = XXX & grant_type = refresh_token & refresh_token = YYYY & client_id = ZZZZ'에서 요청을 사용하면 '오류, 잘못된 요청'이 표시됩니다. – sayam

답변

0

Content-Type을 application/x-www-form-urlencoded로 설정 했습니까? 구글 API 콘솔에서

+0

마지막으로 request.get을 사용하여 성공했습니다. 하지만 여전히이 라이브러리를 살펴볼 것입니다. 감사합니다. – sayam

11

https://github.com/google/google-api-nodejs-client, 당신은 웹 로그 분석 API, 그리고 마지막으로 설정 A를 활성화해야합니다 : 당신은 여전히 ​​붙어 경우

, 그것은 여기에 구글이 nodejs 클라이언트 라이브러리 (알파)를 출시했다고 지적 가치 서비스 계정을 클릭하면 *.p12 파일을 다운로드 할 수 있습니다. 이 *.p12 파일에서

, 당신은 그렇게, 다음 실행합니다 *.pem 파일로 변환해야합니다

openssl pkcs12 -in XXXXX.p12 -nocerts -nodes -out XXXXX.pem

당신은 암호를 묻는 메시지가 표시됩니다

, 그것은해야 notasecret

이제 *.pem 파일이 있고 계정 이메일은 Google api 콘솔에 표시된 파일 인 EMAIL ADDRESS입니다.

가 (참조 : Analytics Google API Error 403: "User does not have any Google Analytics Account")를 귀하의 웹 로그 분석 계정에이 주소를 추가하는 것을 잊지 마십시오 당신은 다음 코드와 함께 갈 수 있어야한다

: xavier.seignard @

var googleapis = require('googleapis'), 
    JWT = googleapis.auth.JWT, 
    analytics = googleapis.analytics('v3'); 

var SERVICE_ACCOUNT_EMAIL = '[email protected]'; 
var SERVICE_ACCOUNT_KEY_FILE = __dirname + '/key.pem'; 


var authClient = new JWT(
    SERVICE_ACCOUNT_EMAIL, 
    SERVICE_ACCOUNT_KEY_FILE, 
    null, 
    ['https://www.googleapis.com/auth/analytics.readonly'] 
); 

authClient.authorize(function(err, tokens) { 
    if (err) { 
     console.log(err); 
     return; 
    } 

    analytics.data.ga.get({ 
     auth: authClient, 
     'ids': 'ga:XXXXXXXX', 
     'start-date': '2015-01-19', 
     'end-date': '2015-01-19', 
     'metrics': 'ga:visits' 
    }, function(err, result) { 
     console.log(err); 
     console.log(result); 
    }); 
}); 
0

내가 팔로우하세요 스 니펫 (snippet)은 수정되었지만 p12 (ja 코드) 대신 json 파일을 사용하고 있습니다. 하지만 나는 의심 스럽지만 nodejs에서 편안한 백엔드를 개발 중입니다. 이 경우 생성 된 모든 요청에 ​​대한 분석 정보를 얻기 위해 app.use()에 ga.get 함수를 넣을 필요가 없습니까?

var key = require('filename.json'); 
var authClient = new JWT(
key.client_email, 
null, 
key.private_key, 
['https://www.googleapis.com/auth/analytics.readonly']); 
관련 문제