1

我的应用程序正在向用户 Facebook 提要发布。一切正常,但图片不见了。我不知道为什么。

这是 $facebook->api 方法使用的数组:

Array
(
    [message] => MyText
    [link] => MyLink
    [name] => MyName
    [picture] => https://lala.herokuapp.com/images/oceanblue.png
    [caption] => MyCaption
    [description] => MyDescription
)

该图像是可访问的(不是上面的真实网址),并在我在浏览器中打开该网址时显示。

api 返回对象如下所示:

Array
(
    [id] => 652685341_10151011701170342
)

非常感谢您的帮助,谢谢!:)

4

1 回答 1

4

我想做同样的事情。您无法将远程图片上传到 facebook,您需要将图片保存在您的服务器上,所以我将图片下载到我的服务器上然后上传。这是我的代码:

/**
 * Post photo on facebook
 * This function requires the user to be logged in
 * This function requires the 'publish_stream' permission
 * 
 * Fetches the picture from remote URL and uploads it to facebook
 * @param string $picture Picture URL
 * @param string $description Description to place in caption
 * @param string $link Link to place in caption
 * @param string $albumId Id of the previously created album
 */
function postPhotoOnFacebook($picture, $description, $link, $albumId){
    global $userId, $facebook;

    $tempFilename = $_SERVER['DOCUMENT_ROOT'].'/temp/';
    $tempFilename .= uniqid().'_'.basename($picture);

    if ($userId) {
        try {
        if($imgContent = @file_get_contents($picture)){
            if(@file_put_contents($tempFilename, $imgContent)){
                $photo_details = array('message' => "$link $description");
                $photo_details['image'] = '@' . realpath($tempFilename);
                $data = $facebook->api('/'.$albumId.'/photos', 'post', $photo_details);

                unlink($tempFilename);
            }
        }
        } catch (FacebookApiException $e) {
            error_log($e);
            $userId = null;
        }
    }
}

这个堆栈问题很有帮助:将远程照片上传到上传

希望有帮助!

于 2012-08-08T15:23:08.477 回答