为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
幕布斯6054654 2022-01-24 10:36:07
我使用 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": { (截断...)"
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我不熟悉这个 api,但看起来你正在努力实现它。


我可以从 microsoft graphql 测试中看到,他们在返回 404 错误GraphException时抛出了一个错误。


以下应该可以解决您的问题:


use GuzzleHttp\Exception\ClientException;


try {   

    $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).'" />';

} catch (ClientException $e) {

    if ($e->getStatusCode() === '404') {

        echo '<img src="MYDEFAULTIMAGEURL" />';

    }

}

编辑:代码更新


查看完整回答
反对 回复 2022-01-24
  • 1 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信