Ajax获得Request返回" Unauthorized" for Azure Ad Graph API

时间:2017-01-26 13:53:25

标签: ajax azure typescript azure-ad-graph-api

我尝试从Azure Ad Graph API代码中调用typescript,但我一直收到错误:Unauthorized

lavaNET.SharePointREST.getJsonWithoutSite(this, "https://graph.windows.net/lavanet.dk/users?api-version=1.6", (tmplData: any, tmplTextStatus: string, tmplXHR: JQueryXHR) => {
    console.log(tmplData)
});

export function getJsonWithoutSite(context: any, url: string, success: SuccessCallback, failure?: ErrorCallback) {

    $.ajax({
        method: 'GET',
        context: context,
        headers: {
            'Authorization': 'Bearer zc21eb27-760b-4b46-828e-xxxxxxxxxxxxx',
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        url: url,
        dataType: 'json',
        accepts: { json: 'application/json; odata=verbose' },
        success: success,
        error: failure || function (jqXHR, textStatus, errorThrown) { alert('Error: ' + errorThrown); }
    });
}

有人可以指出为什么我无法从广告中获取数据吗?

更新这是我需要的还是我完全错了:enter image description here

更新在回复Gary Liu - MSFT时,我从他的代码中获取了这些密钥:enter image description here

我的Ajax是否正确以及我应该使用什么密钥?

1 个答案:

答案 0 :(得分:0)

您已生成访问令牌,并在Authorization标题中设置。

我们需要手动关注OAuth 2.0 authorization flow以实现在我们的应用程序中从Azure AD获取访问令牌的功能。

此外,您可以轻松利用ADAL SDK在您的应用中实现此功能。但是,目前没有这样的ADAL存在。您可以尝试将ADAL for js用于大访问令牌,将其存储在会话存储或客户端浏览器中的本地存储中。并在ts脚本中使用令牌。

这是一个sample,用于在普通javascript中为js使用ADAL。