首页 > 解决方案 > Google 日历:某些 API 端点上的 401 无效凭据

问题描述

我有代码可以从 Google 的日历 API 中检索事件列表。检索到这些事件后,它会根据我拥有的另一个本地列表检查该列表,并使用本地列表中尚未存在的任何事件填充 Google 日历事件。

第一部分运行得很好,它将检索访问令牌,然后在请求中使用该令牌来获取事件列表。下一部分,当它尝试上传事件失败时,会出现 401“Invalid Credentials”错误消息。

我已经检查了控制台 API 中的所有内容,以确保 Google 日历已作为 API 启用,并且其中的所有内容都已正确设置。我已经检查了 API 文档,以确保我在我的身份验证请求中肯定使用了正确的范围,以便 API 发布查询将事件提交给 GCal。

在这一点上,我不确定这是否是请求的问题,并且消息传递只是极具误导性,或者问题是否真的与授权有关,而我只是完全错过了其他东西。

request = new RestRequest("/calendars/"+calID+"/events", Method.POST);
request.AddParameter("access_token", access_token);
request.AddJsonBody(import);

IRestResponse<GCalEvent> inner_response = client.Execute<GCalEvent>(request);

在上面的代码中,access_token 变量与成功请求检索事件前几秒钟使用的值相同。(即它应该是有效的。)

指定的“导入”变量基于以下包含的自定义对象模型:

public class GCalEvent
{
   public string id { get; set; }
   public string status { get; set; }
   public string htmlLink { get; set; }
   public DateTime created { get; set; }
   public DateTime updated { get; set; }
   public string summary { get; set; }
   public string description { get; set; }
   public string start { get; set; } // yyyy-MM-dd
   public string end { get; set; } // yyyy-MM-dd
}

任何帮助或建议都将非常受欢迎,因为我已经为此苦苦挣扎了一段时间。

标签: c#google-calendar-api

解决方案


也许你需要像这样添加你的访问令牌request.AddHeader("Authorization", "Bearer " + access_token);


推荐阅读