2017-09-14 8 views
0

J'ajoute Microsoft Graph API à une application, et Get ne fonctionne pas. Je ne suis même pas sûr qu'il envoie une demande. L'URL que j'ai eu était de Microsoft Graph Explorer.ionic2 API Microsoft Graph Ne pas fonctionner

Je peux m'authentifier correctement via ADAL et récupérer un jeton. Voici le code:

import {Http, Headers} from "@angular/http"; 
import {Injectable} from "@angular/core"; 
//import 'rxjs/add/operator/map' 
//import 'rxjs/add/operator/catch' 
import 'rxjs/Rx'; 


@Injectable() 
export class EmailRESTService { 

data: any; 
token = localStorage.getItem("token"); 


constructor(private http: Http) { 
    this.data = null; 
} 

load() { 

    console.log('Inside EmailREST Promise: '); 
    this.http.get('https://graph.microsoft.com/v1.0/me', { 
    headers: new Headers ({"Authorization": "Bearer " + this.token}) 
    }).subscribe(data => { 
     if(data.status == 200){ 
     this.data = data.json(); 
     } 

     if(data.status!= 200){ 
     console.log('SOmething worng in Subscribe'); 
     } 
    }); 
    } 
} 

Je reçois cette sortie:

console.log('Inside EmailREST Promise: '); 

mais pas de sortie après. J'ai essayé beaucoup de suggestions/codes du filet sans succès.

S'agit-il d'utiliser ADAL Auth sur le mauvais point de terminaison API (API Azure Graph vs API Graph)? i essayé d'utiliser l'adresse suivante: https://graph.windows.net/me?api-version pour Azure Graph API sans succès

Merci à l'avance.

+0

Quelles sont les revendications 'aud' et' scp' dans le jeton? Vous pouvez décoder le jeton de [ici] (https://jwt.io/) et les revendications dans le jeton. –

+0

@FeiXue ** "aud": "https://graph.windows.net" ** & ** "scp": "User.Read" ** – user3930696

+0

Vous devez écrire un gestionnaire d'erreur, le second paramètre de la fonction subscribe . Connectez cette erreur à la console. Alternativement, vous pouvez vérifier l'onglet réseau pour voir pourquoi l'appel échoue –

Répondre

0

En fonction du code, vous avez acquis le jeton pour le graphique Azure AD. Toutefois, dans le code, vous appeliez Microsoft Graph (https://graph.microsoft.com/v1.0/me) au lieu de Azure AD Graph.

Pour peut l'info utilisateur via Azure AD Graph, vous pouvez consulter le reste ci-dessous:

GET:https://graph.windows.net/myorganization/me?api-version=1.6 
authorization: bearer {access_token} 

Ou vous pouvez appeler le Microsoft Graph via obtenir le jeton correspondant comme Dan Kershaw mentionné dans le commentaire.

+0

Je pensais que c'était le problème avant, donc je l'ai utilisé, et gardé 401 non autorisé. Cela a été en partie une cause de ma confusion – user3930696

+0

Les spécifications n'utilisent pas le nom "myorganization" dans l'URL, quand je l'utilise, je reçois une erreur 400 malformée.J'ai utilisé mon nom d'organisation comme la première partie de xxxx.onmicrosoftonline.com, i.e xxxx – user3930696

+0

Quel est le message d'erreur détaillé à propos de l'erreur 401? Il devrait contenir des informations plus spécifiques décrivent l'erreur. Et 'myorganization' fonctionne également pour Azure AD Graph en utilisant le nom ou l'identifiant du locataire. Reportez-vous [ici] (https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/users-operations#GetAUser). Pour l'erreur '400', veuillez vérifier l'URL de la requête contenant le paramètre' api-version', ce paramètre est requis pour utiliser le graphe Azure AD –

1

Merci à tous pour vos commentaires. Je vous en suis reconnaissant. J'ai réussi à obtenir un jeton pour l'API de graphe Azure AD et appeler cette bibliothèque. cependant, cela me donne accès à des opérations utilisateur/groupe, pas à des e-mails et à d'autres opérations dont j'ai besoin. J'étais juste au téléphone avec Microsoft et ils m'ont conseillé d'utiliser MSAL, pas ADAL. Le package javascript MSAL est en aperçu. Et ils n'ont pas encore de package Cordova. Seuls les périphériques natifs Je verrai comment cela fonctionne pour moi. Même si j'ai installé le paquet en utilisant npm dans mon projet, et en utilisant leur tutoriel ici: https://github.com/AzureAD/microsoft-authentication-library-for-js je reçois encore quelques erreurs en temps réel de "ne peut pas trouver la variable Msal", je crois que ce n'est pas un problème Msal en soi, mais un problème d'importation. Et encore une fois, je ne peux pas dire assez que "Azure AD Graph API" n'est pas la même chose que "API Graph", et le premier ne vous donnera accès qu'aux opérations de l'utilisateur. Alors soyez prudent et ne perdez pas votre temps si vous cherchez à obtenir des fonctionnalités de messagerie électronique