我正在尝试将Google日历集成到我的网络应用程序中。我已成功集成Google日历,并能够从Visual Studio IIS Express服务器读取事件。但是当我在Web服务器上发布和上传我的应用程序时,我开始收到错误
Google.Apis.Auth.OAuth2.Responses.TokenResponseException:错误:" invalid_client",说明:"找不到OAuth客户端。",Uri:" "
我的代码
var certificate = new X509Certificate2(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/key.p12"), "notasecret", X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(/*My Service Account */)
{
Scopes = new string[] { CalendarService.Scope.Calendar }
}.FromCertificate(certificate));
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Test",
});
EventsResource.ListRequest request = service.Events.List("primary");
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 10;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// List events.
Events events = request.Execute();
答案 0 :(得分:0)
我通过使用.JSON密钥而不是.P12密钥来解决我的问题。
我从谷歌API控制台下载了新的.JSON密钥。然后改变一点代码。
GoogleCredential credential;
using (var stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/key.json"), FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(new string[] { CalendarService.Scope.Calendar });
}
// Create Google Calendar API service.
var service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Test",
});
EventsResource.ListRequest request = service.Events.List("primary");
request.TimeMin = DateTime.Now;
request.ShowDeleted = false;
request.SingleEvents = true;
request.MaxResults = 10;
request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
// List events.
Events events = request.Execute();
有关详细信息,请访问评论部分的链接。谢谢DaImTo。