2

In meiner Anwendung verwende ich Google Kalender API. Ich habe Client-ID und Client-Geheimnis für mein Konto sowie für einige Benutzer erstellt. Wenn ich die Anwendung ausführen, wenn ich nicht im Browser angemeldet bin, frage mich, mich in meinem Google Mail-Konto anmelden. Sobald ich mich in meinem Google Mail-Konto anmelde, kann ich Ereignisse in meinem Kalender erfolgreich erstellen, aktualisieren, löschen..net Google Kalender API: Jeder kann Ereignisse erstellen/aktualisieren/löschen

Derzeit bin ich mit meiner Kalender-ID in Google Mail-Konto eingeloggt, ich bin in der Lage, die Ereignisse für verschiedene Kalender-ID zu bekommen, aber die ich bin nicht in der Lage, Ereignisse von einem anderen Benutzer Kalender-ID erstellen/aktualisieren/löschen.

meine anforderung ist, ich bin in meine gmail id eingeloggt sagen [email protected] und ich bin in der lage, ereignisse für kalender-id [email protected] aber nicht in der lage zu schaffen/aktualisieren/löschen ereignisse für kalender id [email protected]

ich habe viel recherchiert im Internet, aber nichts gefunden. Nach meinem Wissen müssen wir die Berechtigung + Zugriffs-Token an die Anfrage weitergeben. Ich habe das auch versucht, aber nicht funktioniert.

Bitte schlagen Sie vor, was ich tun soll, um diese Anforderung zu erfüllen.

calID = Convert.ToString(Session["CalenderId"]); 
     userSecret = Convert.ToString(Session["UserSecret"]); 

     if (!string.IsNullOrEmpty(calID) && !string.IsNullOrEmpty(userSecret)) 
     { 
      using (var stream = 
       new FileStream(userSecret, FileMode.Open, FileAccess.Read)) 
      { 
       string credPath = System.Environment.GetFolderPath(
        System.Environment.SpecialFolder.Personal); 
       credPath = Path.Combine(credPath, ".credentials/calendar-dotnet-quickstart.json/" + calID); 

       credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets, 
        Scopes, 
        "user", 
        CancellationToken.None, 
        new FileDataStore(credPath, true)).Result; 
       // Response.Write("Credential file saved to: " + credPath); 
      } 

      // Create Google Calendar API service. 
      var service = new CalendarService(new BaseClientService.Initializer() 
      { 
       HttpClientInitializer = credential, 
       ApplicationName = ApplicationName, 

      }); 

Ich hoffe, Sie haben meine Anforderung verstanden. Warten auf früheste Antwort. Danke.

Antwort

1

Sie müssen sich daran erinnern, dass die Authentifizierung auf a pro Benutzer Bässe. Wenn Sie GoogleWebAuthorizationBroker.AuthorizeAsync ausführen und "Benutzer" mit [email protected] anmelden, können Sie auf den Kalender von [email protected] zugreifen.

Wenn Sie sich erneut mit GoogleWebAuthorizationBroker.AuthorizeAsync anmelden und "User2" mit [email protected] speichern, haben Sie Zugriff auf den Kalender von [email protected]

Was Sie tun sollten, haben [email protected] mit [email protected] ihren Kalender teilen, dann werden sie den Zugang, sie zu aktualisieren haben.

Ungeprüfte Beispielcode:

AclRule body; 
body.Role = "writer"; 
body.Scope.Type = "user"; 
body.Scope.Value = "[email protected]"; 
service.Acl.Insert(body, calendarId).Execute(); 
+0

Dank für die Antwort. –

+0

Können Sie mir bitte sagen, wie ich Kalender-ID gemeinsam nutzen sollten oder können Sie mir Link geben Beispiel arbeiten –

+0

ich nicht ein Beispiel aus der Hand, aber https://developers.google.com/google-apps/calendar/v3/reference/acl/insert # auth Hinweis: scope ist die E-Mail-Adresse des Benutzers, mit der Sie Ihren Kalender teilen möchten. – DaImTo