2016-05-10 12 views
0

Ich bin neu in Office 365 und habe Probleme beim Zugriff auf Rest-API. Ich versuche, den Rest API von Kalender und Mail API zu testen, so entschied ich mich, Postman zu verwenden. Um diese APIs zu testen, benötige ich jedoch ein Zugriffs-Token im Authorization-Header. Um herauszufinden, wie man ein Token erhält, entschied ich mich, das Beispielprojekt here zu erhalten, zu konfigurieren, auszuführen und mich an dieser lokalen Site anzumelden, um das Token im lokalen Speicher zwischenzuspeichern und dieses Token für weitere Anfragen in Postman zu verwenden. Alle Anfragen, die ich getestet habe, haben jedoch "401 unautorisierte Anfrage" zurückgegeben.Zugriff auf die Kalender-API 401 Nicht autorisiert

Was ich tat:

  • eine neue App auf Azure ADD Registrieren Sie sich bei O365-Konto verknüpft
  • full App-Berechtigungen und delegierte Berechtigungen.
  • Aktualisieren Sie 'oauth2AllowImplicitFlow' in der Manifestdatei auf true.
  • Clone Beispielprojekt
  • In app.js, ich den Inhalt der Konfigurationsfunktion ändern ändern, wie folgend

    function config($routeProvider, $httpProvider, adalAuthenticationServiceProvider) { 
        $routeProvider 
        .when('/', { 
         templateUrl: 'views/home.html', 
         controller: 'HomeController', 
         controllerAs: 'home', 
         requireADLogin: true 
        }) 
    
        .otherwise({ 
         redirectTo: '/' 
        }); 
    
    // The endpoints here are resources for ADAL to get tokens for. 
    var endpoints = { 
        'https://outlook.office365.com': 'https://outlook.office365.com' 
    }; 
    
    // Initialize the ADAL provider with your tenant name and clientID (found in the Azure Management Portal). 
    adalAuthenticationServiceProvider.init(
        { 
         tenant: 'mytenantname.onmicrosoft.com', 
         clientId: '<my cliend Id>', 
         endpoints: endpoints, 
         cacheLocation: 'localStorage' 
        }, 
        $httpProvider 
        ); 
    }; 
    

Dann lief ich die app, es mir melden Sie sich an ganz gut und ich kann das Token auch erhalten, aber dieses Token ist auch nicht autorisiert, um es anzufordern. Ich entschlüsselte das Token und sah den Wert von 'aud', es gab nicht "https://outlook.office365.com/" zurück. In this url, sagte der Autor, dass „für die E-Mail, Kalender oder Kontakte APIs“

Also, was habe ich verpasst https://outlook.office365.com/ „Dies sollte“?

Antwort

1

Wie rufen Sie die Office 365-API in AngularJS auf?

Wenn Sie den Benutzer anmelden, erhalten Sie nur das ID_Token, um den Benutzer zu authentifizieren.

Das Aud von id_token ist die Mandanten-ID (GUID).

Um die Office 365-API aufzurufen, müssen Sie die AugularJS-HTTP-Anforderung verwenden.

Hier ein Beispiel E-Mail mit Microsoft Graph API in AngularJS senden:

// Build the HTTP request to send an email. 
    var request = { 
    method: 'POST', 
    url: 'https://graph.microsoft.com/v1.0/me/microsoft.graph.sendmail', 
    data: email 
    }; 

    // Execute the HTTP request. 
    $http(request) 
    .then(function (response) { 
     $log.debug('HTTP request to Microsoft Graph API returned successfully.', response);  
     response.status === 202 ? vm.requestSuccess = true : vm.requestSuccess = false; 
     vm.requestFinished = true; 
    }, function (error) { 
     $log.error('HTTP request to Microsoft Graph API failed.'); 
     vm.requestSuccess= false; 
     vm.requestFinished = true; 
    }); 

Bevor die API aufrufen, ADAL.js wird ein weiteres Token erwerben - Zugriffstoken unter der Sie können die E-Mail zu senden.

enter image description here

UPDATE # 1

ich heruntergeladen auch die Probe Sie erwähnt. Um dieses Beispiel ausführen zu können, stellen Sie bitte sicher, dass Sie über die Berechtigung Exchange Online> Lesen und Schreiben Benutzer Berechtigung in Ihrer Anwendung verfügen.

enter image description here

+0

Ich verwende die Standard-Mail-Funktion in diesem gihub Projekt zur Verfügung gestellt senden, und es stellte sich heraus, dass es nicht die access_token http bekommen könnte: // i.imgur.com/4500mK6.png und ich habe gerade bestätigt, dass ich das id_token verwendet, um API-Aufruf zu machen. So, jetzt, wie man entdeckt, warum das access_token leer ist? –

+0

Siehe mein Update # 1 in Antwort –

+0

Ich bin bereits in der Lage, das Zugriffstoken zu erhalten, aber durch Eingabe der URLs und erhalten Sie den Autorisierungscode manuell, nicht durch das Beispielprojekt. Das Problem bezieht sich nicht auf die Berechtigung für die Konfiguration der App auf Azure AD, da ich bereits die vollständige Berechtigung für Exchange Online dafür eingerichtet habe. Weiß noch nicht, warum –

Verwandte Themen