我正在尝试访问Office 365日历api以创建事件。我遵循的步骤是
https://login.microsoftonline.com/{{tenantid}}/oauth2/token
以获取访问令牌body:
{
"grant_type":"client_credentials",
"client_id": "*****",
"client_secret": "****",
"resource":"https://outlook.office.com"
}
响应:
{
"token_type": "Bearer",
"expires_in": "3600",
"ext_expires_in": "262800",
"expires_on": "1532026206",
"not_before": "1532022306",
"resource": "https://outlook.office.com",
"access_token":"******"
}
当我将此访问令牌传递给创建事件的https://outlook.office.com/api/v2.0/me/events
时。它给了我401未经授权。请求的主体如下所示。请有人帮忙。
{
"Subject": "Discuss the Calendar REST API",
"Body": {
"ContentType": "HTML",
"Content": "I think it will meet our requirements!"
},
"Start": {
"DateTime": "2019-02-02T18:00:00",
"TimeZone": "Pacific Standard Time"
},
"End": {
"DateTime": "2019-02-02T19:00:00",
"TimeZone": "Pacific Standard Time"
},
"Attendees": [
{
"EmailAddress": {
"Address": "arulvelug@hexabot.onmicrosoft.com",
"Name": "Arulvelu G"
},
"Type": "Required"
}
]
}
答案 0 :(得分:0)
要对Office 365进行授权并通过Postman使用REST API,请参考以下解决方案:
首先:获取安全令牌
通过Http Post方法访问[https://login.microsoftonline.com/extSTS.srf]。 http请求的内容如下。
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing"
xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
utility-1.0.xsd">
<s:Header>
<a:Action
s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">https://login.microsoftonline.com/extSTS.srf</a:To>
<o:Security s:mustUnderstand="1"
xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:UsernameToken>
<o:Username>[username]</o:Username>
<o:Password>[password]</o:Password>
</o:UsernameToken>
</o:Security>
</s:Header>
<s:Body>
<t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<a:EndpointReference>
<a:Address>[endpoint]</a:Address>
</a:EndpointReference>
</wsp:AppliesTo>
<t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType>
<t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
<t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType>
</t:RequestSecurityToken>
</s:Body>
</s:Envelope>
邮递员中的演示屏幕截图:
并且响应内容将包括一个安全令牌,如下所示,我们可以使用此安全令牌来获取Office 365的访问令牌。
第二:获取访问令牌
在这里,我向您展示如何获取访问令牌,我是使用安全令牌从SharePoint中获取访问令牌的。
通过http Post方法访问[https://yourdomain.sharepoint.com/_forms/default.aspx?wa=wsignin1.0]。请求的内容是我们上面获得的安全性令牌,如下所示。
响应如下:
我们可以看到响应头中有两个cookie,rtFa和FedAuth,并且这两个cookie需要在后续请求中添加到请求中。
第三:获取请求摘要
通过http Post方法使用上面获得的两个cookie访问[https://yourdomain.sharepoint.com/_api/contextinfo]。
响应如下:
这是我们想要的最终代币!
然后我们可以在O365中使用我们的应用程序的REST API,例如SharePoint,我们只需要添加此令牌和前两个cookie,如下图所示。