2016-04-30 14 views
0

Ich frage mich, wie kann ich alle freigegebenen Google Kalender eines bestimmten Benutzers abrufen. Ich habe eine Service Account, also muss ich nicht die Erlaubnis des Benutzers fragen.Wie bekomme ich alle öffentlichen Kalender von bestimmten Benutzern?

Eigentlich bin ich eine kleine Anwendung in C# wring. Wenn ich brauche, um ein Ereignis für einen bestimmten Benutzer E-Mail hinzufügen, ich einfach do:

Event myEvent = new Event 
{ 
    Summary = "Appointment" 
    Location = "Somewhere", 
    ... 
    Attendees = new List<EventAttendee>() 
    { 
      new EventAttendee() { Email = "[email protected]"} 
    } 
}; 

Wie können Sie also sehe ich die email des Benutzers in der Attendees Eigenschaft übergeben. Dadurch kann ich den Termin in den Hauptkalender eines bestimmten Benutzers eingeben.

Was ich wissen möchte ist: Wie kann ich das gleiche für die gemeinsame Google Calendar erreichen? Auf diese Weise, die Anwendung zeigt dem Benutzer E-Mail, eine Liste von ihm öffentlichen Kalender, wählen Sie eine, und ich kann das Ereignis auf die angegebene E-Mail-und Kalender.

Ich habe versucht, so etwas zu tun:

var calendars = service.CalendarList.List().Execute().Items; 

foreach (CalendarListEntry entry in calendars) 
{ 
    entry.Summary; 
} 

aber calendars Rückkehr Count = 0, weil ich, keine E-Mail angegeben haben, so nehme ich an, dass die API für den Zugriff auf meine E-Mail-API versuchen, richtig ? Wie kann ich der API die E-Mail des Benutzers mitteilen, um eine Kalenderliste nach der Methode CalendarList zu erstellen?

Antwort

1

Dienstkonten sind nicht Du bist ein Dummy-Konto. Sie haben zwei Möglichkeiten, den Dienstkontozugriff (einfach teilen) auf einen Kalender zu gewähren, den Sie auf Ihrem eigenen Google Kalender-Konto erstellen. Dann können Sie in diesen Kalender insert oder Sie können einen neuen Kalender auf den Dienstkonten Google Kalender erstellen Konto.

In jedem Fall können Sie ein neues Ereignis erstellen und Personen hinzufügen. Wenn Sie dann jemanden hinzufügen möchten, verwenden Sie events.instert und setzen notify auf. Der Nutzer erhält eine E-Mail und kann sie seinem eigenen persönlichen Google-Kalender hinzufügen.

Überspringen Sie calendar.list, das in einer anderen Antwort empfohlen wurde. IMO Kalender Liste ist nutzlos, es ist nur die kleine Liste von Kalendern, auf die Sie in der Web-Ansicht Zugriff haben, ist die Liste unten links. Wenn Sie es wirklich verwenden möchten, müssen Sie calendar.list.insert verwenden, um den oben erstellten Kalender hinzuzufügen, um ihn der Kalenderliste der Dienstkonten hinzuzufügen. Aber wie ich sagte, sehe ich nicht den Punkt der Kalenderliste für Dienstkonten.

+0

Sehr interessante Antwort, das Ziel meiner App ist, zeigen Sie die Benutzer-Kalender, so dass der Benutzer ihn privaten Kalender auswählen und den Dienst darauf setzen kann. Aber ich denke, dass ich OAuth benutzen und ihn um die Erlaubnis bitten muss, meine App zu benutzen. – Dillinger

+1

Wenn Sie auf den Kalender des Benutzers zugreifen müssen, müssen Sie Oauth2 verwenden. Anschließend können Sie sie dem Dienstkonto hinzufügen. – DaImTo

0

Mithilfe der Google Kalender-API können Sie öffentliche Kalenderereignisse suchen und anzeigen. Sie können auch auf private Kalender und Ereignisse in diesen Kalendern zugreifen und diese ändern, wenn Sie dazu berechtigt sind.

Um zu wissen, wie man es macht und Beispielcodes sieht, können Sie den Anweisungen Ihrer bevorzugten Schnellstartanleitungen in Get Started with the Calendar API folgen.

Und eine Liste der Kalender von CalendarList: list zu nehmen, nachdem Sie OAuth 2.0 Autorisierung aktivieren, können Sie eine HTTP-Anfrage mit zusätzlichen Parametern mit dem Sample-Format senden:

GET https://www.googleapis.com/calendar/v3/users/me/calendarList

+0

also denke ich, ich muss die Berechtigung für den Benutzer fragen, bevor Sie eine Liste von ihm Kalender bekommen, richtig? Ich habe ein Dienstkonto und kann nur den freigegebenen Kalender mit meinem Dienstkonto sehen. Aber wenn ich richtig verstanden habe, auch wenn der Benutzer ihn Kalender-ID angeben, kann ich ihm Kalender ohne ihn keine Genehmigung hinzufügen. So funktioniert es, stimmst du zu? – Dillinger

+0

Nein, Sie können ein Ereignis nicht einfach mit der Kalender-ID zu einem Kalender hinzufügen, es sei denn, es wurde als öffentlich festgelegt. – DaImTo

Verwandte Themen