2013-08-28 1 views
2

클라이언트 측 응용 프로그램의 서비스 계정을 사용하여 Google Analytics 데이터에 액세스 할 수 있습니까? 그렇지 않은 경우 동일한 결과를 얻는 다른 방법이 있습니까?서비스 계정이있는 Google Analytics API 액세스

전체적으로 클라이언트 측이어야하며 사용자가 인증하도록 요구해서는 안됩니다 (따라서 서비스 계정을 사용하려는 욕구).

답변

3

예, 당신은 https://code.google.com/apis/console에서 서비스 계정으로 다운로드 할 핵심 파일을 제공한다고 말할 수 있습니다. 그걸로 사용자는 액세스 권한을 부여하기 위해 확인을 클릭 할 필요가 없습니다.

서비스 acccount를 작동 시키려면 키 파일이 있어야합니다. 그러면 해당 키 파일에 대한 액세스 권한이있는 모든 사용자가 귀하의 웹 로그 분석 데이터에 액세스 할 수있게됩니다. Javascript는 클라이언트 측에서 제공되므로 키 파일을 보내야합니다. 문제보기? 모든 사람이 귀하의 계정에 액세스 할 수 있도록 권한을 부여합니다. 보안상의 이유로 javascript를 사용하여 서비스 계정을 얻을 수 있다고하더라도 매우 좋은 아이디어는 아닙니다.

+1

을 내가 그 알고 있어요 ,하지만 그것을 구현할 수 없습니다 -. NET에서 버전에서 잘 작동했다지만, 클라이언트 측을 이동해야합니다 – Nathan

0

Node.js에 공식 (및 알파) Google API를 사용하여 토큰을 생성 할 수 있습니다. 서비스 계정이있는 경우 도움이됩니다. 서버에서

:

npm install -S googleapis 

ES6 :

import google from 'googleapis' 
import googleServiceAccountKey from '/path/to/private/google-service-account-private-key.json' // see docs on how to generate a service account 

const googleJWTClient = new google.auth.JWT(
    googleServiceAccountKey.client_email, 
    null, 
    googleServiceAccountKey.private_key, 
    ['https://www.googleapis.com/auth/analytics.readonly'], // You may need to specify scopes other than analytics 
    null, 
) 

googleJWTClient.authorize((error, access_token) => { 
    if (error) { 
     return console.error("Couldn't get access token", e) 
    } 
    // ... access_token ready to use to fetch data and return to client 
    // even serve access_token back to client for use in `gapi.analytics.auth.authorize` 
}) 

당신은 되었다면 경로 "다시 클라이언트로 access_token이 통과"

gapi.analytics.auth.authorize({ 
    'serverAuth': { 
    access_token // received from server, through Ajax request 
    } 
})