как решить ошибку 403 в вызове API Google Analytics - PullRequest
3 голосов
/ 06 декабря 2011

Я использую код в следующем сообщении: Google Analytics API - Программно извлекает просмотры страниц на стороне сервера

, но получаю ошибку 403 в выделенной строке ниже.Я не думаю, что это проблема с учетными данными, потому что мои учетные данные верны, поскольку я проверил и дважды проверил, а также я вхожу в учетную запись аналитики с этими учетными данными.Так может быть, это какая-то проблема с разрешениями для папок?

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

WebClient webClient = new WebClient();
NameValueCollection data = new NameValueCollection();
data.Add("accountType", "GOOGLE");
data.Add("Email", "xxxx@gmail.com");
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();
}

1 Ответ

0 голосов
/ 06 декабря 2011

Если вы слишком часто вызываете API Google Analytics, вы можете получить 403 Запрещенных ошибки .По этой ссылке:

Квоты API General Analytics.Это относится как к API-интерфейсам Google Analytics, так и к API-интерфейсу управления и API-интерфейсу базовой отчетности.- 50 000 запросов на проект в день- 10 запросов в секунду (QPS) на IP-адрес

Я видел 403 ошибки, возвращенных из API AdWords, когда мои приложения сделали слишком много последовательных вызовов, так что это может быть причиной вашей проблемы.

РЕДАКТИРОВАТЬ

Если вы вообще не можете совершать какие-либо звонки, просмотрите шаги, перечисленные здесь в разделе «Перед началом работы».».Согласно документации, вам необходимо зарегистрировать свое приложение через консоль API Google, прежде чем вы сможете использовать API.

...