1

我一直在修改一段時間,讓Google Calendar API與DotNetOpenAuth一起工作。我試着去了解它在幾個不同的方式,我一直對以下錯誤跑起來:401(未經授權)DotNetOpenAuth和谷歌日曆錯誤

The remote server returned an error: (401) Unauthorized. 

我已經爲.NET谷歌數據API中使用CalendarService試了一下兩者,通過調整DotNetOpenAuth示例項目中的Google Contacts示例。

當我嘗試使用CalendarService,我建立了我的身份驗證服務的配置認證令牌,像這樣:

_service = new CalendarService("CalendarSampleApp"); 
_service.SetAuthenticationToken(accessToken); 

當返工的谷歌聯繫人樣,我只是改變了終點,以反映谷歌日曆端點,而不是谷歌聯繫人端點,就像這樣:

private static readonly MessageReceivingEndpoint GetCalendarEndpoint = new MessageReceivingEndpoint("http://www.google.com/calendar/feeds/default/private/full", HttpDeliveryMethods.GetRequest); 

public static XDocument GetCalendarEntries(ConsumerBase consumer, string accessToken, int maxResults/* = 25*/, int startIndex/* = 1*/) 
{ 
    if (consumer == null) 
    { 
     throw new ArgumentNullException("consumer"); 
    } 

    var extraData = new Dictionary<string, string>() { 
     { "start-index", startIndex.ToString(CultureInfo.InvariantCulture) }, 
     { "max-results", maxResults.ToString(CultureInfo.InvariantCulture) }, 
    }; 
    var request = consumer.PrepareAuthorizedRequest(GetCalendarEndpoint, accessToken, extraData); 

    // Enable gzip compression. Google only compresses the response for recognized user agent headers. - Mike Lim 
    request.AutomaticDecompression = DecompressionMethods.GZip; 
    request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"; 

    var response = consumer.Channel.WebRequestHandler.GetResponse(request); 
    string body = response.GetResponseReader().ReadToEnd(); 
    XDocument result = XDocument.Parse(body); 
    return result; 
} 

當我運行此,下面是被髮送的請求:

http://www.google.com/calendar/feeds/default/private/full?oauth_token=1/kyuMER6kPiG13pOw5M4NoEE7AJdN2fE4jTKSgaMToT8&oauth_consumer_key=419892106817-obg9lu9j9ihpnlh2e2qa01ber4hmq5mh.apps.googleusercontent.com&oauth_nonce=NtfQzRV3&oauth_signature_method=HMAC-SHA1&oauth_signature=XEdf4ipECY2iBfdQfupD1IK1uFw%3D&oauth_version=1.0&oauth_timestamp=1358213228&start-index=1&max-results=5&gsessionid=TV7D3zHTc7T3l41Xqfn-ig

正如我所說的,無論在哪種情況下,我都會得到相同的401錯誤。有沒有人有任何想法我做錯了什麼,或如何進一步排除故障?

回答

1

我認爲你正在使用舊版本的庫。 請下載從最新的穩定版本: https://code.google.com/p/google-api-dotnet-client/wiki/Downloads

而且你還應該考慮閱讀OAuth2用戶的文檔: https://code.google.com/p/google-api-dotnet-client/wiki/OAuth2

希望對大家有所幫助, 的Eyal

+0

我已經下載,並參考了最新版本的圖書館(4.2.1.13026)和我有同樣的問題。 – jdmcnair

+0

我誤解了上面的答案。我以爲你在談論DotNetOpenAuth庫,但你在談論Google API。我確實是在一箇舊版本,我的問題已經與最新版本解決。謝謝! – jdmcnair

相關問題