2014-07-13 12 views
0

Google API를 사용하고 있습니다. (Hello Analytics 설명서를 참조하면됩니다.) 인증에 문제가 있습니다. 과정에서 나를 인증하지만 GA에서 데이터를 호출하려고하면이 액세스 권한으로 로그인해야한다는 오류 메시지가 표시됩니다. 인증 버튼이 없어서 인증 할 수 없으며 "세션 가져 오기"버튼이 나타나지만 오류가 발생합니다. 내 예제는 결과가 처리되는 지점까지 자습서 예제와 똑같아 보입니다. 왜 이것이 발생하는지 실제로 알지 못합니다. 어떤 도움을 주시면 감사하겠습니다. 다음은 내 코드입니다 (클라이언트 ID, API 키 및 GA 속성이 분명한 이유로 대체되었습니다).Google API 인증에 실패했습니다.

var clientId = 'clientid'; 
var apiKey = 'apikey'; 
var scopes = 'https://www.googleapis.com/auth/analytics.readonly'; 


function makeApiCall() { 
    var apiQuery = gapi.client.analytics.data.ga.get({ 
    'ids': 'id', 
    'start-date': '2014-06-01', 
    'end-date': '2014-07-01', 
    'metrics': 'ga:pageviews', 
    'dimensions': 'ga:pagePath', 
    'filters': 'ga:pagepath=~marketplace/seller/(*.?)/example' 
    }); 
    console.dir(apiQuery); 
apiQuery.execute(handleCoreReportingResults); 

} 

// This function is called after the Client Library has finished loading 
function handleClientLoad() { 
    gapi.client.setApiKey(apiKey); 
    window.setTimeout(checkAuth,1); 
} 


function checkAuth() { 
    gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult); 
} 


function handleAuthResult(authResult) { 
    if (authResult) { 
    loadAnalyticsClient(); 
    } else { 
    handleUnAuthorized(); 
    } 
} 


// Authorized user 
function handleAuthorized() { 
    var authorizeButton = document.getElementById('authorize-button'); 
    var makeApiCallButton = document.getElementById('make-api-call-button'); 
    makeApiCallButton.style.visibility = ''; 
    authorizeButton.style.visibility = 'hidden'; 
    makeApiCallButton.onclick = makeApiCall; 
} 


// Unauthorized user 
function handleUnAuthorized() { 
    var authorizeButton = document.getElementById('authorize-button'); 
    var makeApiCallButton = document.getElementById('make-api-call-button'); 

    makeApiCallButton.style.visibility = 'hidden'; 
    authorizeButton.style.visibility = ''; 
    authorizeButton.onclick = handleAuthClick; 
} 


function handleAuthClick(event) { 
    gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthResult); 
    return false; 
} 


function loadAnalyticsClient() { 
    gapi.client.load('analytics', 'v3', handleAuthorized); 
} 

function handleCoreReportingResults(results) { 
    if (results.error) { 
    console.log('There was an error querying core reporting API: ' + results.message); 
    } else { 
    console.dir(results); 
    } 
} 
+0

자습서 중 어떤 것이 있습니까? 링크를 게시하십시오. –

+0

죄송합니다. https://developers.google.com/analytics/solutions/articles/hello-analytics-api – KRay

답변

0

당신이 그것을 디버깅하는 데 도움이 순간에이 코드를 실행할 수 아니지만, 내 최초의 제안은 새로 출시 된 Google Analytics Embed API를 사용하는 대신 인증을 직접 수행하고 하지이다.

Embed API의 주요 판매 지점은이 모든 인증 정보를 처리하기 때문에 앱을 신속하게 가져 와서 API를 쿼리 할 수 ​​있습니다.

사용하려는 경우 getting started guide을 확인하시기 바랍니다. 그 후 몇 가지 예를 보려면 demo site을 살펴보십시오. 어떤 데모를위한 소스를 보아 그들이 어떻게 만들어 졌는지 보거나 코드가 Github에 있는지 볼 수 있습니다.

0

코드를 실행했는데 제대로 작동합니다.

이렇게하면 Google developer console에 프로젝트 설정에 문제가 있다고 생각하게됩니다. 원점 불일치 등이있는 경우 검색어를 실행할 수 없습니다. 이걸 로컬 서버에서 실행하고 있습니까? 그렇다면 클라이언트 ID를 만들 때 localhost (사용중인 포트 사용)을 승인 된 JavaScript 원본으로 추가해야합니다.

실제로 내가 게시 한 오류를 게시하면 도움이 될 것입니다. 내가 말했듯이, 당신의 코드는 제게 잘 작동합니다.

관련 문제