获取联系人照片的InvalidAuthenticationToken

时间:2018-02-13 16:46:46

标签: javascript microsoft-graph

我正在尝试使用Microsoft Graph /photo获取Office 365联系人照片。我想在网页上显示这些图像。从api返回的响应包含每个图像的链接,但这些链接需要一个Bearer访问令牌,当我尝试访问这些链接时,我收到以下错误:

{
    "error": {
        "code": "InvalidAuthenticationToken",
        "message": "Bearer access token is empty.",
    }
}

这是代码:

fetch("https://graph.microsoft.com/v1.0/me/contacts/" + item.id +
    "/photo/$value", options).then(function (response) {
    console.log("the response is", response);
}).catch(function (error) {
    console.log("error : ", error);
});

有没有办法将此标记添加到API返回的URL?有什么建议吗?

2 个答案:

答案 0 :(得分:2)

对于可用的用户/群组/联系人照片,没有预先授权的URI。

相反,检索后端的图像并像普通图像资源一样将其提供给页面。除了删除身份验证问题之外,它还允许您将这些图像缓存一段时间,而不是每次都下拉。

另外,您可以将图片转换为base64并将其作为Data URI返回,您可以直接在<image>标记中使用,如下所示:

<image src="data:image;base64,{data}" />

答案 1 :(得分:1)

您需要将授权标头添加到HTTP-Request

HeaderName:&#34;授权&#34;

内容:&#34;持票人&lt;令牌&gt;&#34;

您的请求消息将会显示出来。像这样

fetch("https://graph.microsoft.com/v1.0/me/contacts/" + item.id + "/photo/$value", {
    headers: {
      'user-agent': 'Mozilla/4.0 MDN Example',
      'content-type': 'application/json'
      'Authorization' : 'Bearer <AuthToken>'
    },
    method: 'GET', // *POST, PUT, DELETE, etc.
  })

有关如何添加标题的详细说明,请参阅https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

https://developer.microsoft.com/en-us/graph/docs/concepts/auth_overview有关Graph Auth Tokens

的更多信息