猿问

当用户没有照片时如何解决 404 错误?

我使用 laravel 和 microsoft-graph api。


我需要获取我的用户的照片,但有些人没有,并且对于他们来说,api 返回了一个 404 错误,它阻止了我的页面。我不希望为没有但我不知道如何通过 404 错误的用户放置默认个人资料照片。


我的代码是做什么的:


$photoLink = '/users\/' . $value['email'] . '/photos/240x240';

$photo = $graph->createRequest('GET', $photoLink . '/$value')->execute();

$photo = $photo->getRawBody();

$meta = $graph->createRequest("GET", $photoLink)->execute();

$meta = $meta->getBody();

echo '<img src="data:'.$meta["@odata.mediaContentType"].';base64,'.base64_encode($photo).'" />';

错误代码:GuzzleHttp\Exception\ClientException 抛出消息“客户端错误:GET https://graph.microsoft.com/v1.0/users/XXX@XXX.com/photos/240x240/$value导致404 Not Found响应:{“错误”:{“代码”:“ErrorItemNotFound”,“消息”:“找不到照片。”,“ innerError": { (截断...)"


幕布斯6054654
浏览 141回答 1
1回答

江户川乱折腾

我不熟悉这个 api,但看起来你正在努力实现它。我可以从 microsoft graphql 测试中看到,他们在返回 404 错误GraphException时抛出了一个错误。以下应该可以解决您的问题:use GuzzleHttp\Exception\ClientException;try {&nbsp; &nbsp;&nbsp; &nbsp; $photoLink = '/users\/' . $value['email'] . '/photos/240x240';&nbsp; &nbsp; $photo = $graph->createRequest('GET', $photoLink . '/$value')->execute();&nbsp; &nbsp; $photo = $photo->getRawBody();&nbsp; &nbsp; $meta = $graph->createRequest("GET", $photoLink)->execute();&nbsp; &nbsp; $meta = $meta->getBody();&nbsp; &nbsp; echo '<img src="data:'.$meta["@odata.mediaContentType"].';base64,'.base64_encode($photo).'" />';} catch (ClientException $e) {&nbsp; &nbsp; if ($e->getStatusCode() === '404') {&nbsp; &nbsp; &nbsp; &nbsp; echo '<img src="MYDEFAULTIMAGEURL" />';&nbsp; &nbsp; }}编辑:代码更新
随时随地看视频慕课网APP
我要回答