ionic2 microsoft Graph API无法正常工作
我正在将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没有成功
在此先感谢。
根据代码,您获得了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}
或者您也可以拨打微软图形通过获取相应的令牌丹克肖在注释中。
我怀疑这是以前的问题,所以我用它,并一直让401未经授权。这是部分原因造成我的困惑 – user3930696
该规范不使用URL中的“myorganization”名称,当我使用它时,我得到一个400错误的错误。我使用我的组织名称作为xxxx.onmicrosoftonline.com的第一部分,即xxxx – user3930696
有关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 –
谢谢大家的反馈。我很感激。 我设法为Azure AD图API获取令牌并调用该库。但是,这使我能够访问用户/组操作,而不是我需要的电子邮件和其他操作。 我刚刚和微软通了电话,他们建议我使用MSAL,而不是ADAL。 MSAL JavaScript包正在预览中。他们还没有cordova包装。只有本地设备。我会看到这对我有用。即使我在我的项目中使用npm安装了这个软件包,并在这里使用他们的教程:https://github.com/AzureAD/microsoft-authentication-library-for-js我仍然在实时出现“找不到变量Msal”的错误,我相信这本身并不是Msal问题,但进口问题。 再说一遍,我无法使用足够的“Azure AD图形API”与“图形API”不一样,前者只会让您访问用户操作。所以要小心,不要浪费你的时间,如果你正在寻找获得电子邮件功能
什么是'听'和'scp'声明令牌?您可以解码来自[这里](https://jwt.io/)的令牌和令牌中的声明。 –
@FeiXue **“aud”:“https://graph.windows.net”**&**“scp”:“User.Read”** – user3930696
您应该编写一个错误处理程序,subscribe函数的第二个参数。将该错误记录到控制台。或者你也可以查看网络标签,看看呼叫失败的原因 –