如何将 microsoft graph 365 用户个人资料照片从二进制数据转换为可读图像格式

2024-03-31

我已在 PHP 中使用 Microsoft Graph API 成功显示了有关管理员用户配置文件照片的信息,下面是我使用的代码

<?php
session_start();
echo $acc = $_SESSION['access_token'];
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => "https://graph.microsoft.com/v1.0/me/photo/$value",
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_HTTPHEADER => array(
        "authorization: Bearer $acc",
        "accept: application/json",
        "content-type: application/json; charset=utf-8"
    ) ,
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$res = json_decode($response);
$res1 = json_decode($response, true);
$res1['@odata.context'];
echo 'photo <img src="data:image/jpeg;base64,' . base64_encode($res1['@odata.context']) . '"/>';
echo '<p>photo Name : ' . $res1['@odata.context'] . '</p> 
      <img src="' . $res1['@odata.context'] . '"><br />';
echo '<pre>' . print_r($response, true) . '</pre>';

if ($err)
{
    echo "cURL Error #:" . $err;
}
else
{
}
?>

调用成功返回的标头:

HTTP/1.1 200 OK
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
request-id: dc3a8a0c-0ff1-455f-afe8-5cdeb6b70a1b
client-request-id: dc3a8a0c-0ff1-455f-afe8-5cdeb6b70a1b
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"North Central US","Slice":"SliceA","Ring":"3","ScaleUnit":"002","Host":"AGSFE_IN_14","ADSiteName":"CHI"}}
OData-Version: 4.0
Duration: 121.1991
Date: Sun, 03 Dec 2017 10:21:55 GMT

返回的 JSON:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('2b7f8bf2-3d23-43e6-b068-39aa5009fed7')/photo/$entity",
    "@odata.mediaContentType": "image/jpeg",
    "@odata.mediaEtag": "\"10F9EA34\"",
    "id": "504X504",
    "height": 504,
    "width": 504
}

我的问题是,当我尝试在 php 中的图像链接中显示图像时 根据 php 中的 json Curl 结果,它确实显示了图像。

如何将二进制返回的图像数据转换为浏览器图像可读格式

Below is the new error message after implementing Marc Solutions

CURLOPT_HTTPHEADER => array(
    "authorization: Bearer $acc",
    "accept: image/jpeg",
    "content-type: application/json; charset=utf-8"

)



HTTP/1.1 400 Bad Request
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/json
request-id: 93186bcd-05ad-41b5-bafe-8f5c4d7a3952
client-request-id: 93186bcd-05ad-41b5-bafe-8f5c4d7a3952
x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"North Central US","Slice":"SliceA","Ring":"3","ScaleUnit":"001","Host":"AGSFE_IN_14","ADSiteName":"CHI"}}
OData-Version: 4.0
Duration: 104.1582
Date: Sun, 03 Dec 2017 16:09:14 GMT

{
  "error": {
    "code": "BadRequest",
    "message": "A supported MIME type could not be found that matches the acceptable MIME types for the request. The supported type(s) 'application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false, application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=true, application/json;odata.metadata=minimal;odata.streaming=true, application/json;odata.metadata=minimal;odata.streaming=false;IEEE754Compatible=false, application/json;odata.metadata=minimal;odata.streaming=false;IEEE754Compatible=true, application/json;odata.metadata=minimal;odata.streaming=false, application/json;odata.metadata=minimal;IEEE754Compatible=false, application/json;odata.metadata=minimal;IEEE754Compatible=true, application/json;odata.metadata=minimal, application/json;odata.metadata=full;odata.streaming=true;IEEE754Compatible=false, application/json;odata.metadata=full;odata.streaming=true;IEEE754Compatible=true, application/json;odata.metadata=full;odata.streaming=true, application/json;odata.metadata=full;odata.streaming=false;IEEE754Compatible=false, application/json;odata.metadata=full;odata.streaming=false;IEEE754Compatib...' do not match any of the acceptable MIME types 'image/jpeg'.",
    "innerError": {
      "request-id": "93186bcd-05ad-41b5-bafe-8f5c4d7a3952",
      "date": "2017-12-03T16:09:14"
    }
  }
}

The $value参数用于请求实际图像。然而,您的调用请求的不是 URL 编码$看起来 PHP/Curl 只是忽略了结果。

尝试使用 URL 编码版本%24value反而。

 CURLOPT_URL => "https://graph.microsoft.com/v1.0/me/photo/%24value",
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 microsoft graph 365 用户个人资料照片从二进制数据转换为可读图像格式 的相关文章

随机推荐

  • 如果 cellForRowAtIndexPath 未调用,如何更改 UITableViewCell 外观

    我的应用程序中有一个表格视图 表视图单元格具有带有图案图像的背景 表格视图内容正在发生变化 有时只有两三个单元格包含内容信息 表格视图会自动将其他单元格添加到屏幕底部 问题是这些单元格的背景很清晰 但我想让背景与其他单元格相同 带有图案图像
  • 使用可选参数来实现向后兼容性是一个好主意吗?

    我想知道如何通过使用可选参数来提供向后兼容性 在我的程序中 我有一个带有函数的接口 该函数在整个程序以及许多单元测试中使用 对于某些新功能 必须将布尔值传递到此函数中 如果设置为 则会改变其行为false 如果你通过true 您将得到与以前
  • R - 将数据帧转换为时间序列[重复]

    这个问题在这里已经有答案了 我有谷歌股票数据 它有两列 日期 每日数据 和 收盘价 即 Google 收盘指数 Date Close 10 11 2013 871 99 10 10 2013 868 24 10 9 2013 855 86
  • 仅使用 .wt 文件恢复 MongoDB

    我的电脑崩溃了 我可以使用 wt 文件取回我的数据吗 旧 MongoDB 中的 wt 文件 您可以恢复您的 wt从 Atlas Backup 作为恢复文件夹解压或解压 下载的 WiredTiger 文件到本地 MongoDB 首先 备份您的
  • 如何为 LinearLayout 制作渐变背景?

    我想知道 在java 而不是xml 中为LinearLayout制作渐变背景的最佳方法是什么 有任何想法吗 Thanks
  • 从类内重定向到操作的正确方法?

    背景 我有一个项目分为 Webform 和 MVC 谢天谢地 正在转向 MVC 我有一个LoginManager包含一个类IRedirectionManager类 并根据用户属性 已通过身份验证 密码过期 尚未接受条款 调用重定向管理器上的
  • 在javascript中将字符串分割成句子

    目前我正在开发一个将长列分成短列的应用程序 为此 我将整个文本拆分为单词 但目前我的正则表达式也拆分了数字 我所做的是这样的 str This is a long string with some numbers 125 000 55 an
  • 声明 C++ 不可变类的惯用方式

    所以我有一些相当广泛的功能代码 其中主要数据类型是不可变的结构 类 我声明不变性的方式是通过将成员变量和任何方法设置为 const 来 实际上是不可变的 struct RockSolid const float x const float
  • 如何通过 Java SDK 使用 AWS 端口转发会话

    我正在使用开始一个会话AWSSimpleSystemsManagementAsync如下 Map
  • VS2008 声明数组时出现预期常量表达式错误,但在 GCC 中此代码没有错误

    我有以下功能 void someFun int ar const int size int newAr size do something 我在这一行得到三个错误 Error 1 error C2057 expected constant
  • 调用 .disconnect() 后如何重新连接

    问题 发布手册后如何重新连接客户端到服务器 disconnect 在我当前的项目中 当用户从会话注销时 我需要断开客户端与服务器的连接 我做了一个socket disconnect 才能成功断开连接 服务器从会话中删除了用户 一段时间后 用
  • 如何开始使用 Selenium 2?

    我到处读到我们should现在使用 Selenium 2 如果我的理解正确的话 WebDriver 我不是在谈论 Selenium IDE 它确实很容易使用 我已经阅读了 Selenium 网站上的文档 该文档声称不完整 因为 Seleni
  • Visual Studio 扩展未知错误 - 无法推送或获取任何内容

    当我尝试通过 Visual Studio 的 Git 扩展将任何内容推送到我的 bitbucket 存储库时出现错误 Error encountered while pushing branch to the remote reposito
  • QTableView 中的搜索/查找功能

    我有一个 QWidget 里面有一个 QTableView 我需要在表格的第一列上有查找功能 因此当我单击 Ctrl F 时 会弹出一个查找对话框 class Widget QWidget def init self md parent N
  • 如何在c中增加数组

    我试图使用变量作为增量来增加 int 数组 但它会引发错误 int array MAXSIZE int n fill the array with some numbers some other code 这里的情况是 一旦我分析了前 n
  • Javascript:了解原型链

    我创建了一个简单的类 如下所示 var Class function Class prototype testObj a 2 b 3 现在如果我这样做console log Class testObj I get undefined 但是如
  • 为什么这个 c# 代码片段是合法的?

    愚蠢的问题 但是为什么下面的行会编译 int i new int 1 正如您所看到的 我没有输入第二个元素并在那里留下了逗号 即使您希望它不会编译 仍然可以编译 我想是因为 ECMA 334 标准说 array initializer va
  • 简单的 jQuery 回调在 IE 中中断

    我有几个这样的功能 this find subnav fadeIn 200 buttonHide Now 按钮隐藏 在本例中 是我在其他地方声明的函数 一旦 200ms fadeIn 完成 我想调用该函数 伟大的 适用于 FF 和 Safa
  • 带有平滑流格式 SDK 的基于 IIS 的 HLS

    我正在尝试通过 IIS 运行 HLS 并且通过 Silverlight 进行平滑流处理工作正常 但 HLS 不行 我拥有的 新的实时平滑流媒体发布点启用了 HLS 支持 通过 Smooth Streaming Format SDK 连接 P
  • 如何将 microsoft graph 365 用户个人资料照片从二进制数据转换为可读图像格式

    我已在 PHP 中使用 Microsoft Graph API 成功显示了有关管理员用户配置文件照片的信息 下面是我使用的代码