2012-09-21 25 views
2

我想訪問Google分析數據,並從Google data API SDK獲取樣本。但這些編碼不起作用,拋出異常C#中的Google Analytics API - 執行請求失敗:https://www.google.com/analytics/feeds/accounts/default

Execution of request failed: https://www.google.com/analytics/feeds/accounts/default

所以我發現原因是谷歌更新它的v3.0。我搜索了C#的更新編碼,但我找不到解決方案。

我有這個問題,但與C#。 Exception thrown when using GData .NET Analytics API

我試圖做如下改變,因爲它在谷歌開發人員表示編碼 - https://developers.google.com/analytics/resources/articles/gdata-migration-guide#appendix_a

string userName = this.Username.Text; 
string passWord = this.Password.Text; 

AnalyticsService service = new AnalyticsService("AnalyticsSampleApp"); 
service.setUserCredentials(userName, passWord); 
string googleAccountWebId = "AIXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
string profileFeedUrl = "https://www.googleapis.com/analytics/v2.4/data?key=" + googleAccountWebId; 

DataQuery query2 = new DataQuery(profileFeedUrl); 
query2.Ids = "12345678"; 
query2.Metrics = "ga:visits"; 
query2.Sort = "ga:visits"; 
query2.GAStartDate = DateTime.Now.AddMonths(-1).AddDays(-2).ToString("2011-08-01"); 
query2.GAEndDate = DateTime.Now.ToString("2013-09-01"); 
query2.StartIndex = 1; 


DataFeed data = service.Query(query2); 


foreach (DataEntry entry in data.Entries) 
{ 
    string st=entry.Metrics[0].Value;  
} 

但即使我改變這一點,拋出異常的

DataFeed data = service.Query(query2);

此行。例外情況如下:

Execution of request failed: https://www.googleapis.com/analytics/v2.4/data?key=AIXXXXXXXXXXXXXXXXXXXXXX-8&start-index=1&end-date=2013-09-01&ids=12345678&metrics=ga:visits&sort=ga:visits&start-date=2011-08-01

我使用下面的DLL

Google.GData.Analytics.dll 
Google.GData.Client.dll 
Google.GData.Extensions.dll 

我的問題:

  1. 我怎樣才能糾正這一錯誤?

  2. 我該如何訪問Google分析數據?它是否正確?或者要怎麼做呢? 例如,我想獲得可用的ProfileId及其值。(標題和頁面瀏覽量)

回答

8

Analytics帳戶:

我假設你有一個Analytics帳戶已如果你不然後創建一個,並在這裏註冊您的域名: http://www.google.com/intl/en/analytics/

爲了讓您的API密鑰就這樣:

按照上https://developers.google.com/analytics/resources/articles/gdata-migration-guide的指令(創建PROJ ECT在谷歌API控制檯)來生成密鑰一旦你把它設置爲查詢字符串,請求谷歌Analytics(分析)服務,在這種情況下的一部分: YourAPIkEStringabcdefghijklmno

爲了讓簡檔(IDS上代碼),你應該這樣做:

登錄到您的Analytics帳戶,選擇您的列表(鏈接),點擊管理員按鈕和配置文件選項卡上找到配置文件 配置子選項卡上所需的域,在那裏你會在這種情況下找到配置文件ID八個字符長ID:

這裏有一些C#代碼,以幫助您獲得該ID訪問的次數:

public string VisitsNumber() 
    { 
     string visits = string.Empty; 
     string username = "[email protected]"; 
     string pass = "yourpassword"; 
     string gkey = "?key=YourAPIkEYYourAPIkEYYourAPIkEYYourAPIkE"; 

    string dataFeedUrl = "https://www.google.com/analytics/feeds/data" + gkey; 
    string accountFeedUrl = "https://www.googleapis.com/analytics/v2.4/management/accounts" + gkey; 

    AnalyticsService service = new AnalyticsService("WebApp"); 
    service.setUserCredentials(username, pass); 

    DataQuery query1 = new DataQuery(dataFeedUrl); 

    query1.Ids = "ga:12345678"; 
    query1.Metrics = "ga:visits"; 
    query1.Sort = "ga:visits"; 

    //You were setting 2013-09-01 and thats an invalid date because it hasn't been reached yet, be sure you set valid dates 
    //For start date is better to place an aprox date when you registered the domain on Google Analytics for example January 2nd 2012, for an end date the actual date is enough, no need to go further 
    query1.GAStartDate = new DateTime(2012, 1, 2).ToString("yyyy-MM-dd"); 
    query1.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd"); 
    query1.StartIndex = 1;   

    DataFeed dataFeedVisits = service.Query(query1); 

    foreach (DataEntry entry in dataFeedVisits.Entries) 
    { 
     string st = entry.Title.Text; 
     string ss = entry.Metrics[0].Value; 
     visits = ss; 
    } 

    return visits; 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     Response.Write("Visits:" + this.VisitsNumber()); 
    } 
} 

由於2.4 API不那麼靈活了,我這裏有另一篇文章黑客它獲取配置文件ID: Getting an specific ProfileId from registered Accounts using GData .NET Analytics API 2.4如果您需要將代碼轉換爲C#中,您可以使用Telerik的轉換器轉換:http://converter.telerik.com/

我想這足以使用2.4 API。如果你需要額外的幫助,請告訴我。

+0

你是否認爲gkey,我們需要我們的APIkEY 4次。它是否正確? – DevT

+0

我們是否需要創建oAuth 2.0客戶端ID和API密鑰是從谷歌API的簡單API訪問值,我是嗎?但仍然給我同樣的例外。 – DevT

+0

在使用2.4 API時關閉OAuth。 1)登錄api控制檯: https://code.google.com/apis/console/ 登錄並轉到服務選項卡,啓用分析API切換到開啓 2)轉到API訪問選項卡並複製顯示在API密鑰字段上的值,並在代碼中使用它。 3)按照上述答案中的說明獲取要從中獲取訪問的配置文件ID值,並在代碼中使用它。 如果你沒有得到它的工作,你可以給我發電子郵件您的登錄電子郵件,密碼,配置文件ID和API鍵值來測試它,我的代碼在這裏工作。 – CoderRoller