如何使用 ajax 调用获取 Microsoft Graph API 访问令牌

拉杰什·洛哈尔

我在 SharePoint Online 页面上使用 Microsoft Graph API 从 Outlook 日历获取用户事件。我正在使用 ADAL.JS。当我转到该页面时,该页面重定向到 MS 登录以从 Azure AD 获取访问令牌并再次进入该页面。

我尝试使用 ajax 调用获取访问令牌,但令牌不起作用。我试图在另一个页面上的 iFrame 中调用该页面,但它没有在 iFrame 中工作。

谁能建议我是否可以在后台获取访问令牌,以便该页面不会重定向到 Microsoft 登录。

我们尝试了下面的代码,但它给出的错误是“没有找到包含指定身份的邮箱:xxxxxxx”

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">  
$(document).ready(function() {  
requestToken();  
});  
var token;    
function requestToken() {    
$.ajax({  
"async": true,  
"crossDomain": true,
"url": "https://cors-anywhere.herokuapp.com/https://login.microsoftonline.com/tenantname.onmicrosoft.com/oauth2/v2.0/token", // Pass your tenant name instead of tenantname    
"method": "POST",  
"headers": {  
"content-type": "application/x-www-form-urlencoded"  
},  
"data": {  
"grant_type": "client_credentials",  
"client_id": "****************************", //Provide your app id    
"client_secret": "******************", //Provide your client secret 
"scope": "https://graph.microsoft.com/.default"  
},  
success: function(response) {  
console.log(response);  
token = response.access_token;
    document.getElementById('content').innerHTML = token;
    }   
    })  
    }  
</script>  

<p id="content"></p>

谢谢,

李_MSFT

当我在我的在线环境中测试此线程时,请求失败,因为它需要用户同意(官方指南)。

因此,我授予应用程序应用程序权限并由管理员使用管理员同意 url( https://login.microsoftonline.com/common/adminconsent?client_id=appid&state=12345 )批准它在此处输入图片说明

在此处输入图片说明

现在,我可以通过以下端点访问日历视图:

https://graph.microsoft.com/v1.0/users/userid/calendarView/delta?startdatetime=2018-12-04T12:11:08Z&enddatetime=2019-01-04T12:11:08Z

我的测试代码:

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            requestToken();
        });
        var token;
        function requestToken() {
            $.ajax({
                "async": true,
                "crossDomain": true,
                "url": "https://cors-anywhere.herokuapp.com/https://login.microsoftonline.com/tenant.onmicrosoft.com/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 ": "xxx", //Provide your app id
                    "client_secret": "xxx", //Provide your client secret genereated from your app
                    "scope ": "https://graph.microsoft.com/.default"
                },
                success: function (response) {
                    console.log(response);
                    token = response.access_token;
                    document.getElementById('content').innerHTML = token;

                    $.ajax({
                        url: 'https://graph.microsoft.com/v1.0/users/userid/calendarView/delta?startdatetime=2018-12-04T12:11:08Z&enddatetime=2019-01-04T12:11:08Z',
                        type: 'GET',
                        dataType: 'json',
                        beforeSend: function (xhr) {
                            xhr.setRequestHeader('Authorization', 'Bearer '+token+'');
                        },
                        data: {},
                        success: function (results) {                            
                            console.log(response);
                            debugger;
                        },
                        error: function (error) {
                            console.log("Error in getting data: " + error);
                        }
                    });
                }

            })
        }
    </script>

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从节点脚本获取Microsoft Graph API访问令牌?

使用PHP从Microsoft Graph API获取访问令牌

为Microsoft Graph API获取有效的访问令牌

Microsoft Graph API-如何在没有授权码的情况下获取访问令牌?

Microsoft graph API:无法使用生成的访问令牌获取用户

使用访问令牌通过Microsoft Graph API与OneDrive进行交互

Microsoft Graph API:省略用户访问令牌

Microsoft Graph API的访问令牌立即过期

Microsoft Graph API - 无法刷新访问令牌

访问令牌验证失败Microsoft Graph API

microsoft-graph api:从图中的刷新令牌获取新的访问令牌,而无需重定向URL

无法获取 Microsoft Graph OAuth 访问令牌

从 Microsoft Graph for Azure 获取访问令牌

Microsoft Graph-获取访问令牌

使用OAuthPrompt获取Microsoft Graph API的刷新令牌

如何使用 Microsoft Graph API 为应用设置访问令牌生存期

以编程方式获取使用Facebook Graph API的访问令牌

从 Microsoft Graph API 接收访问令牌但不接收刷新令牌

获取Microsoft Graph和单个服务API终结点(Outlook REST API等)的访问令牌

获取Java中Microsoft Graph API的令牌

如何使用Microsoft Graph API获取AppKey

从Angular应用中检索访问令牌后尝试用Java调用Microsoft Graph API

如何在 Microsoft Graph API 的访问令牌中添加权限

Microsoft Graph API 使用企业应用程序的访问令牌发送电子邮件

使用真实帐户的访问令牌请求上的Microsoft Graph REST API错误AADSTS65001

如何验证使用Microsoft Graph API生成的oauth令牌

无法成功验证来自 Microsoft Graph API 的访问令牌

.Net Core 2.0-获取要与Microsoft Graph一起使用的AAD访问令牌

从Node.js脚本获取Microsoft GRAPH访问令牌