2016-06-13 121 views
8

我很難通過Node.js client libraryGoogle Analytics Reporting API v4進行身份驗證。 我嘗試了所有方法,從JWT(服務令牌:JSON & P12),API密鑰和OAuth 2.0開始,但我從未成功通過身份驗證。如何向Google Analytics報告API v4進行身份驗證

我在我的開發人員控制檯中激活了API,創建了ID並授予了我的Google Analytics(分析)屬性和視圖的權限。 我成功獲取了授權和我的服務帳戶的訪問令牌,但我不知道如何使用它來驗證Analytics Reporting API v4。

我被困在401錯誤消息的前面:「該請求沒有有效的身份驗證憑據」。 我嘗試使用JWT模擬用戶,但隨後服務帳戶未經授權。

如何使用Node.js客戶端庫和智威湯遜認證:

var google = require('googleapis.js'); 

var viewID = 'XXXXXXXXX'; // Google Analytics view ID 
var key = require('service_account.json'); // Service account 

var jwtClient = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/analytics.readonly'], null); 
var oauth2Client = new google.auth.OAuth2(); 

jwtClient.authorize(function(err, result) { 
    if (err) { 
    console.log('Unauthorize'); 
    console.log(err); 
    return; 
    } 

    oauth2Client.setCredentials({ 
    access_token: result.access_token 
    }); 

    //Need to authenticate somewhere near here 
    var analytics = google.analyticsreporting('v4'); 
    //Or here 

    var req = { 
    reportRequests: [ 
     { 
     viewId: viewID, 
     dateRanges: [ 
      { 
      startDate: '2016-05-01', 
      endDate: '2016-06-30', 
      },], 
     metrics: [ 
      { 
      expression: 'ga:users', 
      }, { 
      expression: 'ga:sessions', 
      },], 
     },], 
    }; 

    //Maybe here 
    analytics.reports.batchGet(req, 
    function(err, response) { 
     if (err) { 
     console.log('Fail'); 
     console.log(err); 
     return; 
     } 
     console.log('Success'); 
     console.log(response); 
    } 
); 
}); 

上的Node.js客戶端庫的版本似乎已經到了指定客戶端的方法,但它消失了,也許棄用。

withAuthClient(oauth2Client) 

我試圖通過API調用或請求中的客戶端或令牌,但沒有任何作品。

google.analyticsreporting({ version: 'v4', auth: oauth2Client }); 
google.analyticsreporting({ version: 'v4', access_token: result.access_token }); 

也許這是一個noob問題,但我不知道該怎麼做,我沒有看到相關的分析報告谷歌的API或客戶端庫文檔中V4認證什麼,大多數的例子,我發現使用Google AnalyticsAPI v3。

如果有人設法成功地驗證到Analytics(分析)報告API v4的,請幫助:/

回答

7

發現了什麼我失蹤:

  • 谷歌API客戶端庫 「選項」:

    google.options({ auth: oauth2Client }); //this one is not very optional 
    
  • 與Google Analytics Reporting API v4文檔不同,使用客戶端庫的查詢必須具有標頭以指定每個請求的客戶端(第anks到CVarisco誰注意到,client library documentation是不是真的準確..):

    var request ={ 
        'headers': {'Content-Type': 'application/json'}, 
        'auth': oauth2Client, 
        'resource': req, 
    }; 
    
+0

我想在.net中做同樣的事情,但似乎在API v4中,沒有辦法使用唯一的API密鑰,我錯了嗎? http://stackoverflow.com/questions/43685261/analytics-reporting-v4-with-api-key – Giox

+0

這可以通過http url調用完成嗎? – shzyincu

0

還要注意的是,推薦的方法做身份驗證與服務器端的服務帳戶使用auth.getApplicationDefault。

https://developers.google.com/identity/protocols/application-default-credentials

我們建議使用應用程序的默認憑據任何 下列情形:
...略...
- 您正在訪問與雲項目或其他相關數據的API適用於整個應用程序而不是個人用戶數據。對於涉及用戶數據的調用,最好使用最終用戶明確同意訪問的授權流程(請參閱使用OAuth 2.0訪問Google API)。

相關問題