В Jason Rivera я отредактировал свой пост с подробными сведениями о моей работе и о том, где в настоящее время возникают проблемы

ешно отобразил информацию о профилях пользователей-администраторов. Фотографии с использованием Microsoft Graph API в PHP, ниже приведен код, который я использовал

<?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 согласно результату json Curl в php, он действительно показывает изображение.

Как преобразовать двоичные возвращенные данные изображения в читаемый формат изображения браузера

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"
    }
  }
}

Ответы на вопрос(2)

вам нужно использовать $ value следующим образом:

https://graph.microsoft.com/v1.0/me/photo/$value
 briandenny03 дек. 2017 г., 11:46
В Jason Rivera я отредактировал свой пост с подробными сведениями о моей работе и о том, где в настоящее время возникают проблемы
 briandenny03 дек. 2017 г., 10:46
это именно то, что я использовал. Я думаю, что необходимо преобразовать изображение в читаемый браузером формат
Решение Вопроса

$value Параметр используется для запроса фактического изображения. Ваш звонок, однако, запрашивает не URL-кодировку$ и похоже, что PHP / Curl просто игнорирует результат.

Попробуйте использовать URL кодированную версию%24value вместо.

 CURLOPT_URL => "https://graph.microsoft.com/v1.0/me/photo/%24value",
 Marc LaFleur04 дек. 2017 г., 21:52
JSON - это сериализованное представление объекта, а не кодировка. Для того, чтобы отобразить изображение вimg тег, вам нужно предоставить URL-адрес данных (data:image/gif;base64,{base64-image}). Видетьwebsiteoptimization.com/speed/tweak/inline-images для обзора того, как это работает.
 briandenny03 дек. 2017 г., 17:17
В Marc я добавил ваше решение, оно отображает ошибку ниже {"error": {"code": "BadRequest", "message": "Не удалось найти поддерживаемый тип MIME, который соответствует допустимым типам MIME для запроса. Поддерживаемый тип (типы) 'application / json; odata.metadata = минимальный; odata.streaming = true; IEEE754Compatible = false, application / json; odata.metadata = минимальный; odata.streaming = true; IEEE754Compatible = true, application / json ; odata.metadata = минимальный; odata.streaming = true, application / json; odata.metadata = минимальный; odata.streaming = false; IEEE754Compatible = false и т. д.
 briandenny03 дек. 2017 г., 17:10
В Marc Lafleur я обновил свой код с вашим решением, но показывает ошибку ниже
 Marc LaFleur03 дек. 2017 г., 17:39
Попробуйте удалитьaccept Заголовок целиком. Также убедитесь, что вы запрашиваете/$value.
 briandenny03 дек. 2017 г., 17:22
Я также обновил свой вопрос / сообщение, чтобы отразить все детали ошибки, которую он показал. Пожалуйста мне Спасибо

Ваш ответ на вопрос