2011-12-06 89 views
3

我正在使用的代碼在下面的帖子: Google Analytics API - Programmatically fetch page views in server side如何解決403錯誤在谷歌分析API調用

但得到下面的高亮線403 Forbidden錯誤。我不認爲這是一個憑證問題,因爲我已經檢查並進行了雙重檢查,因爲我的憑證是正確的,而且我使用這些憑據登錄到分析帳戶。所以也許這是一些文件夾權限問題?

//-------------- Get Auth Token ------------------- 

WebClient webClient = new WebClient(); 
NameValueCollection data = new NameValueCollection(); 
data.Add("accountType", "GOOGLE"); 
data.Add("Email", "[email protected]"); 
data.Add("Passwd", "xxxx");//Passwd, not a misspell. 
data.Add("service", "analytics"); 
data.Add("source", "xxxx-xxxx-xx");//Could be anything. 

byte[] bytes = webClient.UploadValues("https://www.google.com/accounts/ClientLogin", "POST", data); 
string tokens = Encoding.UTF8.GetString(bytes); 
string authToken = extractAuthToken(tokens); 

//-------------- Get page views ------------------- 

string feed = "https://www.google.com/analytics/feeds/data"; 

//Required: 
string ids = "ga:xxxx"; 
string metrics = "ga:pageviews"; 
string startDate = "2011-06-25"; 
string endDate = "2011-07-25"; 

//Optional: 
string dimensions = "ga:pagePath"; 
string sort = "-ga:pageviews";    

string feedUrl = string.Format("{0}?ids={1}&dimensions={2}&metrics={3}&sort={4}&start-date={5}&end-date={6}", 
    feed, ids, dimensions, metrics, sort, startDate, endDate); 

webClient.Headers.Add("Authorization", "GoogleLogin " + authToken); 

// This is the line I get the 403 error on: 
**string result = webClient.DownloadString(feedUrl);** 

//-------------- Extract data from xml ------------------- 

XDocument xml = XDocument.Parse(result); 
var ns1 = "{http://www.w3.org/2005/Atom}"; 
var ns2 = "{http://schemas.google.com/analytics/2009}"; 

var q = from entry in xml.Descendants() 
     where entry.Name == ns1 + "entry" 
     select new 
     { 
      PagePath = entry.Element(ns2 + "dimension").Attribute("value").Value, 
      Views = entry.Element(ns2 + "metric").Attribute("value").Value 
     }; 

//-------------- Do something with data ------------------- 
foreach (var page in q) 
{ 
    Debug.WriteLine(page.PagePath + " " + page.Views);     
} 

//-------------- Help Method ------------------- 
private string extractAuthToken(string data) 
{   
    var tokens = data.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);    
    return tokens.Where(token => token.StartsWith("Auth=")).Single(); 
} 
+0

其證書問題。谷歌無法驗證您的身份,因此您的反應將受到禁止。其他可能的原因可能是,如果您/您的團隊已經消費了給定賬戶的最大API調用限制。 – codersofthedark

+0

如果您甚至不能使用此代碼一次... 我已複製粘貼您的代碼並使用我的憑據對其進行測試,並且工作正常,您確定您的密碼和日期是否正確? – varholl

+0

什麼是ga id? – user560498

回答

0

如果您過於頻繁地致電Google AnalyticsAPI,請致電you could get 403 Forbidden errors。通過該鏈接:

通用分析API配額。這同時適用於分析的API,即,管理API和Core Reporting API:
- 每個IP每秒10查詢(QPS)

我見過的403錯誤 - 50000
每個項目的要求每天當我的應用程序進行了太多連續呼叫時,從AdWords API返回,這可能是您的問題的原因。

編輯

如果您無法撥打任何電話的話,那麼檢查「開始之前」中列出here的步驟。根據文檔,您需要通過Google API控制檯註冊您的應用程序,然後才能使用該API。

+0

謝謝......請問如何解決這個問題? (我今天才開始使用這個代碼,那麼爲什麼會這樣呢?) – user560498

+0

oops!只是意識到我沒有註冊到谷歌的API,所以這可能是我的問題的原因,將檢查和張貼如果解決了... – user560498

+0

@ user560498請參閱我的答案的更新。 – rsbarro