2012-01-16 52 views
7

中使用OAuth 2.0和給定的登錄密碼我試圖使用最新的.NET客戶端庫來訪問Google Analytics API(Core Reporting API)的3.0版。 我在Google API控制檯註冊了我的應用程序,並使用OAuth 2.0訪問API。Google Analytics API V3.0:在程序代碼

由於目前還沒有樣本如何使用Google AnalyticsAPI,因此我使用了sample,它演示了OAuth2服務最簡單的用例,並將該架構應用於我的上下文 - 並取得了成功。

(注:我也發現help糾正庫Google.Apis.Analytics.v3.dll的源代碼中的錯誤)

如果我用我的計劃,我需要登錄谷歌,授予我的應用程序權限並複製授權碼。

我想通過將我的登錄密碼寫入程序代碼(以明文形式)來跳過此流程。我的問題是我無法在庫中找到這個功能。在谷歌分析版本2.3中,它確實可以用簡單的C#行:

AnalyticsService asv = new AnalyticsService(""); 
asv.setUserCredentials(CLIENT_USERNAME, CLIENT_PASS); 

任何人都可以幫助我嗎?

回答

5

輸入用戶名和密碼是一個安全問題。 Google僅爲此目的添加了離線訪問。

使用刷新令牌。您可以將其存儲並使用它來訪問分析數據,而無需每次都登錄,這基本上就是您使用所描述的用戶名和密碼進行的操作。

離線訪問指令可以在這裏找到:

http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#offline

+0

非常感謝!我會看看它... – 2012-01-23 09:02:05

+4

它的工作。我找到了一個有用的[示例](http://stackoverflow.com/a/7489566/1151937),其中顯示瞭如何在Google圖書館中使用刷新令牌。 – 2012-01-27 15:37:05

+0

@ michael-ki優秀!很高興你找到了一個例子。 +1用於更新,因此可以幫助其他人。 – 2012-01-27 15:38:50

0

嗯,這是一個老問題。但是,這裏有一個如何讓它工作的代碼示例。

PM> install-package google.apis -pre 
PM> install-package google.apis.analytics.v3 -pre 

下載從API控制檯客戶端機密JSON文件,並將其添加到名爲client_secret.Json項目。您可能必須更改其上的屬性才能生成操作內容,如果更新,則將其複製出來。

// Autentication 
UserCredential credential; 
using (var stream = new System.IO.FileStream("client_secret.json", System.IO.FileMode.Open,  System.IO.FileAccess.Read)) 
{ 
    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    GoogleClientSecrets.Load(stream).Secrets, 
    new[] { AnalyticsService.Scope.AnalyticsReadonly }, 
    "user", CancellationToken.None, new FileDataStore("Analytics.Auth.Store")).Result; 
    } 

//創建服務

AnalyticsService service = new AnalyticsService(new BaseClientService.Initializer() { 
    HttpClientInitializer = credential, 
    ApplicationName = "Analytics API sample", 
});