Facebook API - 上传图片后获取图片URL

3

我想知道如何在通过Graph API将图片上传到Facebook后,获取图片URL或其他数据而不仅仅是id。我尝试从Graph API Explorer中获取图片数据,但是它给了我false的结果。当我使用带有user_photosaccess_token时,它会给我详细信息。然而,我可以从$facebook->getAccessToken()获得的默认访问令牌仍然给我false

所以我的问题是 - 在我将图片上传到Facebook后,如何获取图片数据?

这是我的代码:

<?php

require 'fb/src/facebook.php';

if ($_FILES["file"]["error"] == 0)
{
    // Getting
    $file = $_FILES["file"];
    $fileExtension = $imgExtension = end(explode(".", $file["name"]));
    $upload_dir = "upload/";

    // Modifying
    $newName = md5(uniqid()) . "." . $fileExtension;

    // Checking if this name already exists
    while (file_exists($upload_dir . $newName) == true)
    {
        $newName = md5(uniqid()) . "." . $fileExtension;
    }

    // Uploading
    if (move_uploaded_file($file['tmp_name'], $upload_dir . $newName) == true)
    {
        $facebook = new Facebook(array(
                    'appId' => 'app id',
                    'secret' => 'app secret',
                ));

        $facebook->setFileUploadSupport(true);
        $args = array(
            "message" => "test caption"
        );

        $args['image'] = '@' . realpath($upload_dir . $newName);

        $data = $facebook->api('/me/photos', 'post', $args);
        print_r($data);
    }
    else
    {
        echo "Error.";
    }
}
1个回答

2
您应该在响应中获取已上传照片的id(在您的情况下是$data),然后使用该id简单调用Graph API,即可返回所有所需信息。
$data = $facebook->api('/me/photos', 'post', $args);
$photo_data = json_decode($data, true);
$photo = $facebook->api('/'.$photo_data['id']);

$thumbnail = $photo['picture'];
$large_photo = $photo['source'];
$photo_page = $photo['link'];

更新:您需要要求user_photos以读取photo对象的详细信息。


当我尝试这样做时,它什么也没有返回。 - Stan
您是否拥有响应中上传照片的idOpenGraph Explorer工具对该id返回什么结果? - Juicy Scripter
是的,我明白了..但我在哪里可以做到这一点?在我的应用程序设置中还是其他地方? - Stan
或者我能以某种方式使其上传照片到应用程序的图库而不是用户的图库? - Stan
不兼容 v2.8 和 v2.9 的图形 API 版本。StackOverflow 应该有一种记录和过滤适用版本的方式。这只是一个建议。 - coder.in.me
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接