【发布时间】:2019-09-02 08:49:24
【问题描述】:
我有代码可以从 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
}
我们非常欢迎任何帮助或建议,因为我已经为此苦苦挣扎了一段时间。
【问题讨论】:
-
我会使用嗅探器来查看是否可以获得更多信息。这里有一些事情要检查。 1)查看响应是使用 http 1.0(流模式)还是 1.1(块模式) 2)检查 http 标头中的语言国家/地区设置 3)检查响应中的浏览器类型(IE 或 chrome)。不同的机器可能有不同的默认浏览器设置 4) 检查机器上的证书以确保安装了正确的证书并且没有过期。
-
传统上,访问令牌作为授权标头传递。