hoe de 403-fout op te lossen in de api-call van Google Analytics

I'm using the code in the following post: Google Analytics API - Programmatically fetch page views in server side

maar het krijgen van een 403 verboden fout op de gemarkeerde regel hieronder. Ik denk niet dat het een probleem met de referentie is, omdat mijn referenties correct zijn, zoals ik heb gecontroleerd en dubbel gecontroleerd, en ook log ik in op het analyse-account met deze referenties. Dus misschien is het een kwestie van maprechten?

//-------------- 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();
}
3
Het is een probleem met de reputatie. Google kan u niet verifiëren en daarom krijgt u een verboden reactie. Andere waarschijnlijke reden kan zijn dat u/uw team al een maximum API Call Limiet voor het opgegeven account heeft gebruikt.
toegevoegd de auteur codersofthedark, de bron
Ik kan deze code gebruiken van localhost maar als ik het vanuit de productieomgeving gebruik (geprobeerd op vele dedicated servers heb ik toegang tot die de dagelijkse quota NIET overschrijden), en krijg ik het 403 Forbidden-bericht met exact dezelfde code over productie. Iedereen weet waarom dat gebeurt ??
toegevoegd de auteur Code Monkey, de bron
wat is de ga id?
toegevoegd de auteur user560498, de bron
In het geval dat u deze code niet eens kunt gebruiken ... ik heb uw code gekopieerd en getest met mijn inloggegevens en werkt goed, weet u zeker dat uw gebruikersnaam en datums kloppen?
toegevoegd de auteur varholl, de bron

1 antwoord

Als u de Google Analytics API te vaak belt, kunt u 403 Verboden fouten . Van die link:

General Analytics API quotas. These apply to both the Analytics APIs, i.e., Management API and Core Reporting API:
- 50,000 requests per project per day
- 10 queries per second (QPS) per IP

Ik heb 403 fouten van de AdWords API gezien als mijn applicaties te veel opeenvolgende gesprekken hebben gemaakt, zodat mogelijk de oorzaak van uw probleem kan zijn.

Bewerken

Als u helemaal geen oproepen kunt plaatsen, bekijkt u de stappen hier onder "Voordat u begint". Volgens de documentatie moet u uw toepassing registreren via de Google API-console voordat u de API kunt gebruiken.

0
toegevoegd
Bedankt @ rsbarro voor het delen. In de Google API-console kan men zich echter alleen registreren voor OAuth 2.0-toegang. Hoe kan het zich verhouden/help ClientLogin toegang?
toegevoegd de auteur ericn, de bron
@ user560498 Zie de update van mijn antwoord.
toegevoegd de auteur rsbarro, de bron
Bedankt ... Mag ik vragen hoe dit kan worden opgelost? (Ik begon deze code pas vandaag te gebruiken, dus waarom is deze hapenning?)
toegevoegd de auteur user560498, de bron
oops! realiseerde me net dat ik me niet heb geregistreerd bij Google api, dus dat kan de oorzaak van mijn probleem zijn, zal controleren en plaatsen als het is opgelost ...
toegevoegd de auteur user560498, de bron