28

일부 실험 정보를 푸시하기 위해 Google 애널리틱스 API에 액세스하는 Ruby 앱을 작성 중입니다.Google Analytics API : "사용자에게이 계정에 대한 충분한 권한이 없습니다."

앱을 연결하고 다음과 같은 기능을 통해 구글 서비스 계정을 사용하여 인증 : 인증하고 문제없이 두 API를 발견

def connect 
    ... 
    @@client = Google::APIClient.new(:application_name => 'My Service App', 
            :application_version => '1.0.0') 
    key_file = Rails.root.join('config', 'privatekey.p12').to_s 
    key_secret = 'somesecret' 
    key = Google::APIClient::PKCS12.load_key(key_file, key_secret) 
    asserter = Google::APIClient::JWTAsserter.new(
    SECRETS[:google_service_account_email], 
    ['https://www.googleapis.com/auth/yt-analytics.readonly', 
    'https://www.googleapis.com/auth/analytics.readonly' 
    ], 
    key 
) 
    @@client.authorization = asserter.authorize() 
    ... 
end 

....

YouTube 분석 API에 대해 클라이언트를 사용하면 문제없이 작동합니다. 똑같은 계정을 사용하면 403 오류 응답에 ...

response = @@client.execute({ 
    # 'analytics is the API object retrieved via discover_api() 
    :api_method => analytics.management.experiments.list, 
    :parameters => { 
    'accountId' => 'AAAAAAAA', 
    'profileId' => 'PPPPPPPP', 
    'webPropertyId' => 'UA-WWWWWWWW-#' 
    } 
}) 

결과를 웹 로그 분석 API를 통해 액세스 할 수 : 권한 부여에 관해서

{"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this account."} 

, 내가 두 번 확인 계정 서비스를 @ myapp.com :

  • 는 Google 웹 로그 분석 웹 인터페이스에 대한 모든 권한을 가지고 있습니다.[email protected] 계정을 사용하여 로그인했으며 내가 시도한 동일한 실험을 볼 수있었습니다.
  • Analytics API를 사용하도록 설정했습니다. API 콘솔에서 서비스 섹션에서 Analytics API 항목이 ON으로 전환되었음을 확인했습니다. (YouTube 분석과 마찬가지로)
  • 적절한 AccountID, ProfileID 및 WebPropertyID 값을 사용하고 있습니다. Google 애널리틱스 웹 인터페이스에서 직접 복사했습니다.

서비스 계정이 적어도 하나의 API (YouTube 웹 로그 분석)에 액세스 할 수 있음을 감안할 때, 및 관련 계정 ([email protected]) 웹 로그 분석 웹 인터페이스에 액세스 할 수 있습니다 서비스 계정에 문제가있을 것 같습니다 특히 애널리틱스 API에 액세스합니다.

아이디어가 있으십니까?

비슷한 주제 :

+3

실제 GA 프로필에서 서비스 계정에 대한 권한을 부여 했습니까? 관리>보기> 사용자 관리> "권한 추가 :" – Goose

+4

[email protected] 계정에 모든 권한이 있습니다. 그러나 귀하의 의견에 따라 실제 서비스 계정 이메일 (예 : [email protected])을 추가하라는 메시지가 표시되어 문제를 해결하는 것으로 보입니다. 이것을 답 형식으로 쓰고 싶다면 기꺼이 크레딧을 드리겠습니다. –

+0

[Analytics Google API 오류 403 : "사용자에게 Google 웹 로그 분석 계정이 없습니다"] (http://stackoverflow.com/questions/12837748/analytics-google-api-error-403-user-does-not) -have-any-google-analytics-account) – andygeers

답변

44

하는 서비스 계정 이메일 (개발자 @ 1234567890 같은 것을 제공해야합니다. gserviceaccount.com) 권한을 사용하여 GA보기에서 읽고 쓸 수 있습니다. 당신이 분석 사용자에게 개발자 이메일을 추가 한 후이 메시지가 계속 표시되는 경우

+8

하나의 여분의 문제 : "속성"수준이 아니라 "보기"수준 (Google 애널리틱스의 관리 인터페이스가이 시점에서 조금 혼란 스럽습니다)에서이 작업을 수행했는지 확인하십시오. – andygeers

+0

@andygeers는이 작은 팁을 제공해 주셔서 감사합니다! 참으로 도움이 되네. :) – tugberk

+3

그래서 나는 이것을했고 아직도 나를 위해 일하지 않는다. 다른 제안? – Chris

2

:

관리>보기> 사용자 관리> "에 대한 권한을 추가"를 선택합니다.

새 Google_Service_Analytics ($ client)를 사용하기 전에 개체에 범위를 추가해야 할 수도 있습니다.

$ client-> setScopes ("https://www.googleapis.com/auth/plus.login");

나는 이것을 풀기 위해 하루 종일 썼다!

+0

+1이 많은 도움이되었습니다! –

-2

누군가보기가 더 많은 경우보기 ID를 사용해야합니다.

1

나는 여전히 같은 권한 문제를 가지고 있지만, 다음과 같은 제안 도움이 있지만 그것을 해결하지 않았더라도 분석에 계정 수준에 이메일을 추가 한 후 : ("https://www.googleapis.com/auth/plus.login")를

$ 클라이언트 -> setScopes을; 나를 위해 작동하지 않았다

그러나 이것은 한 :

$ 클라이언트 -> setScopes ("http://www.googleapis.com/auth/analytics");

+0

코드를 요점으로 게시 하시겠습니까? 당신의 클라이언트 객체는 무엇입니까? 범위가 설정되어 있지만 다른 값을 가지고 기본적인 quries를 만들 수 있습니다. –

+0

분석 범위를 추가해야하는 웹 로그 분석 데이터에 액세스하는 경우 농담이 아닙니다. – Chris

1

은 내가 또한 개발자 콘솔로 가서 그것을 작동하게하기 위해 API를 사용하도록했다 정확한 내 table_id

(ie. GetProfiles(oauth_token) 
tableid_input = "ga:72848696") 
2

를 입력해야합니다. the developer console으로 이동하여 프로젝트를 선택하고 사용할 API를 활성화하십시오.

+1

예! 웹 서비스 계정, 웹 로그 분석 계정에 대한 권한을 PHP 코드 내에서 설정하고 JS 내에서 다른 곳으로 밀어 넣어야하는 버튼이 있다는 것을 알았습니다. – Gruffy

9

올바른 이드를 선택하십시오! 및 이메일 권한이 권한을 설정하지만 난 관리> 계정 설정에 계정 ID를 사용하고 있었다 나는 올바른 자격 증명을 사용하고 있었다 나의 경우

(- -> authorization_code> access_token이 계정 ID, 비밀 계정) 페이지에 추가하고 ga :를 앞에 추가합니다.

실제로 필요한 ID는 테이블 ID입니다. (또는 나를 위해 일한 계정 ID를 언급하는 대부분의 사람들이 있기 때문에 최소한 저에게 효과적이었습니다.) 당신은 여기에 하나를 찾을 수 있습니다 https://ga-dev-tools.appspot.com/account-explorer/

enter image description here

을 내가 심하게 전반적으로 문서화이 API를 발견하고 UI가 불분명

service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews') 

으로 당신은 쿼리 할 수 ​​있습니다. 어쩌면 그건 나 뿐이야.

+2

예! 이것은 제가 가지고 있던 문제였습니다. 아니 어디서 찾은 "table_ID"내가 겪은 네 자습서에서 언급했다. 나는이 게시물을 읽고 위에 나열된 URL을 사용한 후에 만 ​​그것을 알아 냈습니다. – pheeper

+0

googleAnalyticsR CRAN 패키지를 사용 중이며 운영 업체에서 명시한 것과 동일한 문제가 있습니다. 내가 viewId 대신에 accountId 인 것처럼 보입니다. +1 – Greconomist