【发布时间】:2019-09-10 11:57:06
【问题描述】:
我们在 Google 中创建了一个服务帐户,并使用 Calendar API 来添加事件,之前它工作正常,谷歌停止该帐户并重新激活它后,它没有工作
我们已经尝试了新的服务帐户并逐行调试我们的代码,没有错误,并且还返回创建的事件但未显示在日历中
CalendarService service = null;
var serviceAccountCredentialFilePath =
Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
"ServiceAccount_Key.json");
if (Path.GetExtension(serviceAccountCredentialFilePath).ToLower()
== ".json")
{
GoogleCredential credential;
string[] scopes = new string[] {
CalendarService.Scope.Calendar, // Manage your calendars
CalendarService.Scope.CalendarReadonly // View your Calendars
};
using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(scopes);
}
// Create the service.
service = new CalendarService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "Esoco"
});
}
// End //
// Insert Event //
var myEvent = new Event
{
Id = guid,
//Transparency = "OPAQUE",
Summary = subject,
Location = location,
Start = new EventDateTime { TimeZone = timezone, DateTime = start },
End = new EventDateTime { TimeZone = timezone, DateTime = end },
Attendees = objattendees,
Organizer = organizerdata,
Description = summary,
};
myEvent.Start.DateTimeRaw = myEvent.Start.DateTimeRaw.Replace("Z", "");
myEvent.End.DateTimeRaw = myEvent.End.DateTimeRaw.Replace("Z", "");
//myEvent.ICalUID
var recurringEvent = service.Events.Insert(myEvent, "primary");
recurringEvent.SendNotifications = true;
try
{
var outputofevent = recurringEvent.Execute();
ScriptManager.RegisterClientScriptBlock(this, typeof(string), "Alertscript", "alert('"+outputofevent.Status+"')", true);
}
预期结果在日历中插入事件显示,但实际结果未在日历中显示
【问题讨论】:
-
你怎么知道它没有显示在日历中?你在做一个 event.list 来检查吗?
-
请检查垃圾箱(在设置下)。可能是事件被自动取消。我也面临同样的问题。
-
@DaImTo 是的,它返回为 250
-
然后插入事件。您是否扫描了 events.list 返回的事件以找到您所关注的事件并完成了 event.get 以查看已发送的与会者?
-
@DaImTo - 是的,所有活动在与会者中都有我的名字,我还通过活动 ID 执行了一个活动获取方法,它返回了详细信息
标签: c# google-api google-calendar-api google-api-dotnet-client service-accounts