자바 라이브러리 및 서비스 계정을 사용하여 Google 애널리틱스에서 데이터를 가져 오려고합니다. 모든 필수 설정을 완료했습니다. 클라우드 콘솔에서 Analytics API를 활성화하고, 서비스 계정을 생성하고, 개인 키를 얻고, GA 사용자 관리에서 읽기 권한이있는 생성 된 개발자 전자 메일을 추가합니다.Google Analytics 자바 API "401 Unauthorized Login Required"오류
내 로컬 구현으로이 잘 작동합니다. 하지만 서버 측에서 동일한 코드를 실행하려고하면 "401 Unauthorized Login Required"라는 상태가 나타납니다. 두 가지 구현 모두 Java 5 런타임, Google API 서비스 Java libs 버전 1.17.0 rev75를 사용합니다.
자격 증명 정의와 코드 :
HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(HTTP_TRANSPORT)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("[email protected]")
.setServiceAccountScopes(Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY))
.setServiceAccountPrivateKeyFromP12File(new File("privatekey.p12"))
.build();
는 웹 로그 분석 개체 및 쿼리 빌더 :
Analytics analytics = new Analytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
.setApplicationName("MyApp")
.build();
Get apiQuery = analytics.data().ga().get("ga:123", "2013-12-09","2013-12-09", "ga:visits");
HttpResponse response = apiQuery.executeUnparsed();
I`ve 트래픽을 비교 httpLogger을 추가했다. 로컬 및 서버 실행시 인증 흐름이 동일하며 액세스 토큰을 가져 오는 데 문제가 없음을 알았습니다.
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
Alternate-Protocol: 443:quic
ETag: "xxxx"
Date: Mon, 30 Dec 2013 13:12:32 GMT
Content-Type: application/json; charset=UTF-8
X-Content-Type-Options: nosniff
Cache-Control: private, max-age=0, must-revalidate, no-transform
Content-Length: 1728
Content-Encoding: gzip
X-XSS-Protection: 1; mode=block
Expires: Mon, 30 Dec 2013 13:12:32 GMT
X-Frame-Options: SAMEORIGIN
Server: GSE
{JSON BODY}
그러나 상태 (401)와 서버 실행 I`ve 받았다 응답
가 :CONFIG: -------------- RESPONSE --------------
401 Unauthorized
date: Mon, 30 Dec 2013 13:17:32 GMT
alternate-protocol: 443:quic
server: GSE
www-authenticate: Bearer realm="https://www.google.com/accounts/AuthSubRequest"
transfer-encoding: chunked
expires: Mon, 30 Dec 2013 13:17:32 GMT
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
content-type: application/json; charset=UTF-8
cache-control: private, max-age=0
{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}}
아무도 나를 도울 수
지역 실행으로는 I`ve 상태 (200)로 응답을받은? 나는 내가 아는 모든 것을 실제로 확인했지만 운은 없다.
수정 서비스 계정에 대한 도메인 전체 권한의 위임이 Google Analytics API와 관련이있는 사람은 누구입니까?
감사합니다. Sergey.
자격 증명 개체를 만드는 코드를 볼 수 있습니다. 코드를 공유하여 해당 개체를 사용하여 API 요청을 만들 수 있습니까? – aeijdenberg
안녕하세요 @aeijdenberg! 귀하의 답변에 감사드립니다. 애널리틱스 개체와 쿼리 코드를 메인 포스트에 추가했습니다. 감사. –