【问题标题】:Get access token for Microsoft graph api using plain JavaScript使用纯 JavaScript 获取 Microsoft graph api 的访问令牌
【发布时间】:2019-02-18 15:35:53
【问题描述】:

我尝试使用 ajax 调用使用 Microsoft graph api 获取规划器数据但我收到 https://graph.microsoft.com/v1.0/me/planner/tasks400(错误请求):

function requestToken() {
        $.ajax({
            "async": true,
            "crossDomain": true,
            "url": "https://cors-anywhere.herokuapp.com/https://login.microsoftonline.com/common/oauth2/v2.0/token", // Pass your tenant name instead of sharepointtechie
            "method": "POST",
            "headers": {
                "content-type": "application/x-www-form-urlencoded"
            },
            "data": {
                "grant_type": "client_credentials",
                "client_id ": "--REDACTED--", //Provide your app id
                "client_secret": "--REDACTED--",

                                     //Provide your client secret genereated from your app
                "scope ": "https://graph.microsoft.com/.default"
            },
            success: function (response) {
                console.log(response);
                token = response.access_token;


                $.ajax({
                    url: 'https://graph.microsoft.com/v1.0/me/planner/tasks',
                    type: 'GET',
                    dataType: 'json',
                    beforeSend: function (xhr) {
                        xhr.setRequestHeader('Authorization', 'Bearer '+token+'');
                    },
                    data: {},
                    success: function (results) {                            
                        console.log(results);
                        debugger;
                    },
                    error: function (error) {
                        console.log("Error in getting data: " + error);
                    }
                });
            }

        })
    }

从规划器中寻找 json 数据但得到错误代码 https://graph.microsoft.com/v1.0/me/planner/tasks 400(错误请求)同时从图形 api 获取。

【问题讨论】:

    标签: azure-active-directory sharepoint-2013 microsoft-graph-api


    【解决方案1】:

    首先,您现在共享的代码存在几个主要问题:

    1. 您不应使用客户端凭据授予,即 clientId 和客户端密码从客户端 JavaScript 代码调用 Microsoft Graph API,它仅适用于守护程序或服务等机密客户端。

    2. 无论如何,您都在尝试访问端点https://graph.microsoft.com/v1.0/me/planner/tasks,其中包括仅对用户身份有效的关键字me。因此,您应该尝试使用当前登录用户的身份获取令牌,或者在用户未登录时提示用户。

    您可以使用Microsoft Graph JavaScript Client Library 调用Microsoft Graph。

    客户端库的链接还通过示例代码提供了良好的分步指导。

    注意:请不要将您的客户机密或任何其他敏感信息作为您在 stackoverflow 上的问题的一部分。我现在将编辑问题,但您仍应为您的应用程序删除此特定密码并生成新密码以供将来使用。

    【讨论】:

    • 是的,将客户端机密放入 JavaScript 是一个非常糟糕的主意,因为任何使用该网站的人都可以获得应用程序的密码。 AAD 的令牌端点可防止您在此处开枪。
    • 嗨 rohit,我已经参考了链接 Microsoft Graph JavaScript Client Library,通过该链接我探索了用于图形 api 身份验证和获取数据的纯 java 脚本。我在客户端出现错误通过使用此参考 @987654322 @。你能用这个参考来澄清我吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多