2017-09-14 97 views
0

我正在將Microsoft Graph API添加到應用程序,並且Get無法正常工作。我甚至不確定它是否發送請求。我得到的URL來自Microsoft Graph Explorer。ionic2 microsoft Graph API無法正常工作

我能夠通過ADAL正確認證,並獲得令牌。下面是代碼:

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'); 
     } 
    }); 
    } 
} 

我得到這樣的輸出:

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

但之後沒有輸出。我從網上嘗試了很多建議/代碼,但沒有成功。

這是在錯誤的API端點上使用ADAL Auth(Azure圖形API或圖形API)的問題嗎?我試着用這個網址: https://graph.windows.net/me?api-version 對於Azure Graph API沒有成功

在此先感謝。

+0

什麼是'聽'和'scp'聲明令牌?您可以解碼來自[這裏](https://jwt.io/)的令牌和令牌中的聲明。 –

+0

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

+0

您應該編寫一個錯誤處理程序,subscribe函數的第二個參數。將該錯誤記錄到控制檯。或者你也可以查看網絡標籤,看看呼叫失敗的原因 –

回答

0

根據代碼,您獲得了Azure AD Graph的令牌。但是,在代碼中,您調用Microsoft Graph(https://graph.microsoft.com/v1.0/me)而不是Azure AD Graph。

爲了能夠通過Azure的AD圖的用戶信息,可以參考下面的休息:

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

或者您也可以撥打微軟圖形通過獲取相應的令牌丹克肖在註釋中。

+0

我懷疑這是以前的問題,所以我用它,並一直讓401未經授權。這是部分原因造成我的困惑 – user3930696

+0

該規範不使用URL中的「myorganization」名稱,當我使用它時,我得到一個400錯誤的錯誤。我使用我的組織名稱作爲xxxx.onmicrosoftonline.com的第一部分,即xxxx – user3930696

+0

有關401錯誤的詳細錯誤消息是什麼?它應該包含更多描述錯誤的具體信息。而'myorganization'也適用於Azure AD Graph,用作租戶名稱或ID。請參閱[這裏](https://msdn.microsoft.com/Library/Azure/Ad/Graph/api/users-operations#GetAUser)。對於'400'錯誤,請檢查包含'api-version'參數的請求URL,此參數是使用Azure AD Graph –

1

謝謝大家的反饋。我很感激。 我設法爲Azure AD圖API獲取令牌並調用該庫。但是,這使我能夠訪問用戶/組操作,而不是我需要的電子郵件和其他操作。 我剛剛和微軟通了電話,他們建議我使用MSAL,而不是ADAL。 MSAL JavaScript包正在預覽中。他們還沒有cordova包裝。只有本地設備。我會看到這對我有用。即使我在我的項目中使用npm安裝了這個軟件包,並在這裏使用他們的教程:https://github.com/AzureAD/microsoft-authentication-library-for-js我仍然在實時出現「找不到變量Msal」的錯誤,我相信這本身並不是Msal問題,但進口問題。 再說一遍,我無法使用足夠的「Azure AD圖形API」與「圖形API」不一樣,前者只會讓您訪問用戶操作。所以要小心,不要浪費你的時間,如果你正在尋找獲得電子郵件功能