gpt4 book ai didi

php - 如何临时存储 Facebook 头像?

转载 作者:行者123 更新时间:2023-11-30 06:04:40 26 4
gpt4 key购买 nike

嘿伙计们,我正在尝试构建一个小应用程序,它可以拉入用户的个人资料图片,允许他们操作图像,然后将修改后的图像发布到他们的个人资料图片相册(理想情况下设置为他们的个人资料图片,但我不不认为这是可能的吗???)。

我遇到的问题是我用来更改图像的 javascript 将无法工作,除非图像是本地的

<img src="http://profile.ak.fbcdn.net/hprofile-ak-snc4/[some_user_id].jpg" />不会工作,但是 <img src="img/image.jpg" />会...

有什么办法可以实现吗?

我用来获取用户图片的方法是这样的:

连接到 facebook:

<?php
require_once 'library/facebook.php';

$app_id = "###";
$app_secret = "###";

$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));

if(is_null($facebook->getUser()))
{
header("Location:{$facebook->getLoginUrl(array('req_perms' => 'user_status,publish_stream,user_photos'))}");
exit;
}

然后显示图片:

<?php

$aResponse = $facebook->api('/me', array(
'fields' => 'picture',
'type' => 'large'
));
echo "<img src='".$aResponse["picture"]."' />";
?>

非常感谢!

最佳答案

自己编写一个代理图像服务器,它将您要操作的图像作为查询参数并只输出图像内容。这比直接访问用户的图片要慢一点,但如果您有创意,您可以在本地缓存该图片以加快后续加载速度。

一个简单的方法是这样的:

前端:

<img src="image_server.php?img=<?= urlencode($aResponse['picture']); ?>">

后端:

<?php
if (!empty($_GET['img']))
{
//make sure this is a file on the facebook content delivery network
//and not our /etc/passwd or database connection config, or something
//else completely malicious.
if (preg_match("#^https?://profile\.ak\.fbcdn\.net/#i", $_GET['img']))
{
$img_path = $_GET['img'];
}
else
{
//do something with someone that entered a bad image, probably just
//display a "no image" image.
die('bad user. bad.');
}

readfile($img_path);
exit;
}
else
{
//no image was specified. output an anonymous/no image image.
die('an image file must be specified.');
}

您可能想要比这更复杂一点……但这是基本要点。

注意:php 代码假定您在 php.ini 中启用了 fopen 包装器(因此您可以包含 web url)。

关于php - 如何临时存储 Facebook 头像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com