2014-07-13 315 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的主要賣點是它可以爲你處理所有這些auth的東西,所以你可以很快得到一個應用程序並運行來查詢API。

如果你想使用它,我建議檢查getting started guide。之後,請看demo site以查看一些示例。您可以查看任何演示的源代碼以查看它們的製作方式,或者代碼位於Github上。

0

我運行了你的代碼,它對我來說工作得很好。

這使我認爲在Google developer console中的項目設置存在問題。如果有一個原點不匹配或類似的情況,您將無法運行查詢。你是否在本地服務器上運行它?如果是這樣,當您創建客戶端ID時,您必須確保將localhost(包含您使用的端口)添加爲批准的JavaScript源。

如果你真的發佈了你正在獲得的錯誤,那真的會有所幫助,除此之外,我不確定我能幫你。就像我說的,你的代碼對我來說工作得很好。