2011-09-23 82 views
4

我想爲我工作的業務開發一個應用程序。我們正在使用Google Apps,希望從Google Analytics獲取數據並將其顯示在我們的其中一個網絡應用中。我不希望客戶看到任何授權應用程序的請求。我想使用像這樣http://www.google.com/support/a/bin/answer.py?hl=en&answer=162105這種雙腿OAuth,但Google Analytics不在列表中。我仍然可以使用它嗎? .NET Google Data API library還是Google API .NET Client支持?如何使用Google Analytics API和兩段OAuth(Google Apps for business)?

編輯1

使用Google API .NET Client,我想出了應工作到我的感覺:

var auth = new Google.Apis.Authentication.OAuth2LeggedAuthenticator(DOMAIN_CONSUMER_KEY, DOMAIN_CONSUMER_SECRET, USER_TO_IMPERSONATE, DOMAIN); 

var service = new Google.Apis.Analytics.v3.AnalyticsService(auth); 

service.Key = DEV_KEY_FROM_API_CONSOLE; 

var _request = service.Management.Accounts.List(); 

foreach (var item in _request.Fetch().Items) 
{ 
    Console.WriteLine(item.Name); 
} 

...但我得到這個錯誤:

Google.Apis.Requests.RequestError 
InvalidCredentials [401] 
Errors [ 
    Message[Invalid Credentials] 
    Location[Authorization - header] 
    Reason[authError] 
    Domain[global] 
    ] 

謝謝

+0

認真!?!?!沒有人 !?!??! – billy

+0

老實說,我不知道,但WordPress插件[Google Analyticator](http://wordpress.org/extend/plugins/google-analyticator/)做了類似的事情(在您的WordPress儀表板中顯示的數據),它是PHP,但也許看看它的代碼可能會對此有所啓發? –

+0

好的,我會檢查這個。謝謝保羅。 – billy

回答

1

我已經回答了類似的問題here。這回答瞭如何解決一些會導致401 Invalid Credentials的問題,並可能幫助您獲得.Net API的v3版本。由於您的解決方案使用棄用的v2 API來繞過您使用身份驗證所遇到的問題,因此我只是將其添加到此處。

+0

謝謝,我會檢查! – billy

0

我找到了一種使用.NET library for the Google Data API的方法。我發現this link感謝this guy。這是列出所有Google Analytics帳戶的工作代碼,考慮到GOOGLE_APPS_DOMAIN_SECRET是使用this method生成的關鍵字,DOMAIN是Google Apps的域名,用戶名是電子郵件的前綴(例如:「firstname.lastname」)我們要模仿谷歌Apps用戶(例如管理員,有機會獲得的一切):

 var requestFactory = new GOAuthRequestFactory("an", "Any app name"); 
     requestFactory.ConsumerKey = DOMAIN; 
     requestFactory.ConsumerSecret = GOOGLE_APPS_DOMAIN_SECRET; 

     var service = new AnalyticsService("Any app name"); 
     service.RequestFactory = requestFactory; 

     var query = new AccountQuery(); 
     query.OAuthRequestorId = username + "@" + DOMAIN; 

     var serviceQuery = service.Query(query); 

     foreach (AccountEntry Entry in serviceQuery.Entries) 
     { 
      WriteLine(Entry.Title.Text); 
     } 

唯一的問題是,我要模擬用戶,並不能簡單地訪問一切。

編輯:方法已過時

3

本博客文章逐步說明如何使用Google API .Net客戶端實現2階段身份驗證。

http://bittwiddlers.org/?p=212#awp::?p=212

然而,筆者通過此評論結束他的職位:

具體到谷歌的API-dotnet的客戶端項目中的上述信息是相關的,但庫泄漏內存像篩選,如果您嘗試執行任何異步工作或使用2LO(代表多個用戶),將會導致性能下降。

祝你好運,讓我知道,如果你想出一個更好的解決辦法,我是一個有點噁心的問題...

相關問題