2013-07-08 79 views
2

我有,我從拿到的OAuth訪問令牌:如何使用OAuth訪問令牌調用GData服務?

var state = new AuthorizationState(new[] { "http://www.google.com/m8/feeds/" }) 
{ 
    Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl) 
}; 

// Redirect to: 
var authUri = arg.RequestUserAuthorization(state) 
... 

var authState = arg.ProcessUserAuthorization(authCode, state); 

在那之後,我怎麼通過authState.AccessToken到的服務的API的GData?

所有examples我覺得傳遞一個OAuth2Authenticator<>到服務的構造函數,如:

var auth = new OAuth2Authenticator<NativeApplicationClient>(...); 
var service = new PlusService(auth); 

我試圖使用ContactsService但最新的版本(2.2.0.0)似乎不具備這個構造函數 - 唯一的構造函數需要一個應用程序名稱。

我已經嘗試設置與ContactsService.SetAuthenticationToken()訪問令牌,但請求頭設置不正確,它看起來就像這樣:

Authorization: GoogleLogin auth=<access token> 

相反的:

Authorization: Bearer <access token> 

似乎沒有被任何方法來操縱標題。

回答

0

我們遇到了同樣的問題。不要使用SetAuthenticationToken(),而應該像在GData API頁面上提供的示例中所建議的那樣,爲RequestFactory分配一個OAuth2RequestFactory。

如果您已經在GData API之外管理OAuth令牌,現在看起來有點反直覺了。事實證明,你不需要實際提供clientId,clientSecret等到請求工廠。唯一重要的字段是OAuth訪問令牌,如果這是有效的訪問令牌。

至少對我們來說,我們發現使用這種方法,GData API正確指定了Authorization Http頭,API調用成功。

相關問題