我一直在修改一段時間,讓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;
}
當我運行此,下面是被髮送的請求:
正如我所說的,無論在哪種情況下,我都會得到相同的401錯誤。有沒有人有任何想法我做錯了什麼,或如何進一步排除故障?
我已經下載,並參考了最新版本的圖書館(4.2.1.13026)和我有同樣的問題。 – jdmcnair
我誤解了上面的答案。我以爲你在談論DotNetOpenAuth庫,但你在談論Google API。我確實是在一箇舊版本,我的問題已經與最新版本解決。謝謝! – jdmcnair