上传图片到Facebook

5

我正在尝试将一张图片上传到Facebook粉丝页面上的相册,以下是我的代码:

$ch = curl_init();

        $data = array('type' => 'client_cred', 'client_id' => 'app_id','client_secret'=>'secret_key',' redirect_uri'=>'http://apps.facebook.com/my-application/'); // your connect url here

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token');
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        $rs = curl_exec($ch);
        curl_close($ch);

        $ch = curl_init();
        $data = explode("=",$rs);
        $token = $data[1];

        $album_id = '1234';
        $file= 'http://my.website.com/my-application/sketch.jpg';
        $data = array(basename($file) => "@".realpath($file),
        //filename, where $row['file_location'] is a file hosted on my server
            "caption" => "test",
            "aid" => $album_id, //valid aid, as demonstrated above
            "access_token" => $token
        );

        $ch2 = curl_init();
        $url = "https://graph.facebook.com/".$album_id."/photos";
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_HEADER, false);
        curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($ch2, CURLOPT_POST, true);
        curl_setopt($ch2, CURLOPT_POSTFIELDS, $data);
        $op = curl_exec($ch2);

当我回显$token时,似乎可以得到令牌,但运行脚本后,出现如下错误:{"error":{"type":"OAuthAccessTokenException","message":"An access token is required to request this resource."}} 我完全不知道为什么会这样!
基本上,在该代码中所做的是使用cURL获取访问令牌,然后再通过cURL上传照片到我的相册,但我一直收到该错误消息!
任何帮助将不胜感激,谢谢!
2个回答

4

好的,搞定了,这里是代码,假设您已经有一个有效的会话。

    $token = $session['access_token'];

    //upload photo
    $file= 'photo.jpg';
    $args = array(
    'message' => 'Photo from application',
    );
    $args[basename($file)] = '@' . realpath($file);

    $ch = curl_init();
    $url = 'https://graph.facebook.com/me/photos?access_token='.$token;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
    $data = curl_exec($ch);

这将会把指定的图片上传到会话持有者的图库中,如果没有相册,则会创建一个相册。同时,您可以通过上面演示的会话数组访问令牌。 希望这能对某些人有所帮助。


很高兴能帮忙,我很愉快! - Odyss3us

0

我实际上在我的会话中请求了publish_stream权限,但仍然没有任何反应。 - Odyss3us
你要发布图片到相册,难道不应该请求 user_photos 权限吗? - Dmytro Zavalkin
好主意,我会试试看!我会继续更新的!感谢迄今为止的评论! - Odyss3us

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