我想借助谷歌服务帐户访问谷歌日历 但我得到了belloing错误
Google.Apis.dll中出现“Google.Apis.Auth.OAuth2.Responses.TokenResponseException”类型的例外,但未在用户代码中处理
我收到的错误:"invalid_grant", Description:"Invalid JWT: Token must be a short-lived token and in a reasonable timeframe", Uri:""
string credPath = "key path";
String serviceAccountEmail = xxxx@developer.gserviceaccount.com";
var certificate = new X509Certificate2(credPath, "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { CalendarService.Scope.CalendarReadonly,
CalendarService.Scope.Calendar}
}.FromCertificate(certificate));
// Create the service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "HRTool",
});
var events = service.Events.List("my calaender id").Execute();
答案 0 :(得分:6)
当您尝试使用刷新令牌时,以下内容会返回
invalid_grant
错误:
- 您的服务器时钟与network time protocol - NTP不同步。
- 已超出刷新令牌限制。
首先,请使用服务器时钟检查同步问题,有关其他信息,请参阅poor synchronization of the computer's clock答案。其次,检查刷新令牌和旧令牌的处理。某些流程包括其他步骤,例如使用刷新令牌获取新的访问令牌。有关各种类型应用程序的流程的详细信息,请参阅Google的OAuth 2.0 documentation。
希望这有帮助!
答案 1 :(得分:0)
如果出现“无效的JWT签名”错误。如果您使用的是P12证书,请确认所使用的客户端密钥的P12是否正确。