0

Ich möchte auf andere Benutzer Kalender meiner Organisation von meinem Administrator-Konto auf Microsoft Office 365 zugreifen. Auf Office 365 kann ich suchen und auf diese Kalender zugreifen. Ich möchte auf diese (andere Benutzer) Kalender mit Microsoft Graph API zugreifen. Hier finden Sie die offiziellen Dokumentationen für den Zugriff auf den Office 365-Kalender mit Graph-APIs. 1. Calendars from Users 2. Directly Access CalendersZugriff verweigert oder nicht gefunden Fehler von Graph API beim Zugriff anderer Benutzer Kalender in Office 365

Hier ist meine Auth Helper-Klasse, in der ich meine Erlaubnis bin definieren Tive

module AuthHelper 

    CLIENT_ID = '91e6****-****-40f7-9b46-******d1149c' 
    CLIENT_SECRET = 'pftjo*******55;hwSN2-(%' 

    SCOPES = [ 'openid', 
      'profile', 
      'User.Read', 
      'Mail.Read', 
      'Calendars.Read', 
      'Calendars.Read.Shared' ] 

    def get_login_url 
    client = OAuth2::Client.new(CLIENT_ID, 
           CLIENT_SECRET, 
           :site => 'https://login.microsoftonline.com', 
           :authorize_url => '/common/oauth2/v2.0/authorize', 
           :token_url => '/common/oauth2/v2.0/token') 

    login_url = client.auth_code.authorize_url(:redirect_uri => authorize_url, :scope => SCOPES.join(' ')) 
    end 

    def get_token_from_code(auth_code) 
    client = OAuth2::Client.new(CLIENT_ID, 
           CLIENT_SECRET, 
           :site => 'https://login.microsoftonline.com', 
           :authorize_url => '/common/oauth2/v2.0/authorize', 
           :token_url => '/common/oauth2/v2.0/token') 

    token = client.auth_code.get_token(auth_code, 
            :redirect_uri => authorize_url, 
            :scope => SCOPES.join(' ')) 
    end 

Der Versuch, Postbote:

https://graph.microsoft.com/v1.0/users Abfrage zusammen mit Header zeigt mir alle Benutzer aber

GET/users/{id | userPrincipalName}/Kalender Abfrage zeigt mir 404 Not Found Fehler.

Kurz gesagt, kann ich andere Benutzer Zugriff auf Kalender von Suchleiste meiner Office365 Anwendung, aber keinen Zugriff auf

any of these methods verwenden.

Antwort

0

Es sieht aus wie nur Anwendungen, die außerhalb eines Benutzerkontext laufen (wie ein Service/Dämon app) jeden Kalender in der Organisation zugreifen können. Getting access tokens for apps that run without the presence of a signed-in user is a bit different und Sie müssen den Genehmigungsablauf für Administratoren durchlaufen, um Ihrer App Zugriff auf den Kalender eines jeden zu gewähren. Ich habe das gerade getestet und Calendars.Read ist der einzige Bereich, den Sie brauchen.

enter image description here

Die Schritte sind:

  1. App registrieren
  2. hinzufügen Calendars.Read als Anwendung Erlaubnis
  3. Grant-Admin-Zustimmung, um Ihre Anwendung von wie https://login.microsoftonline.com/{REPLACE WITH TENANT}/adminconsent?nonce=graph&prompt=select_account&client_id={REPLACE_WITH_APP_ID}&response_type=token&redirect_uri=https://localhost:3001&state=foobar zu einer URL gehen

Sobald ich ein Zugriffs-Token bekam , Der Rest Anruf einen anderen Benutzer Kalender zuzugreifen war genau das, was Sie in der Frage gestellt:

GET https://graph.microsoft.com/v1.0/users/[user-id]/calendars/[calendar-id]/events

:

GET https://graph.microsoft.com/v1.0/users/[user-id]/calendars

Sobald Sie eine Kalender-ID haben, können Sie ihre Kalenderereignisse sehen Ich empfehle Ihnen, unsere Kalenderbeispiele in der Graph explorer zu sehen.

enter image description here

Verwandte Themen