【问题标题】:Uploading a picture to facebook将图片上传到 Facebook
【发布时间】:2010-06-11 00:44:04
【问题描述】:

我正在尝试将图像上传到 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请求此资源需要令牌。"},我不知道它为什么这样做!

基本上我在该代码中所做的是使用 curl 获取访问令牌,然后也通过 curl 将照片上传到我的相册,但我一直收到该错误!

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: php facebook facebook-graph-api


    【解决方案1】:

    好的,开始工作了,这里是代码,假设你有一个有效的会话。

        $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);
    

    这会将指定的图像上传到会话持有者画廊,如果没有,它将创建一个相册,您也可以通过会话数组访问令牌,如上所示。 希望这可以帮助某人。

    【讨论】:

    • 很高兴,很高兴能帮上忙!
    【解决方案2】:

    您的应用程序可能没有所需的权限。

    要通过 OAuth 请求权限,请使用 你的范围参数 授权请求,并包括 逗号分隔的所有列表 您要请求的权限。

    http://developers.facebook.com/docs/authentication/permissions

    【讨论】:

    • 我实际上是在我的会话中请求 publish_stream 权限,但仍然没有。
    • 你把图片发到相册里了,你不应该也请求 user_photos 吗?
    • 好点,我会试试的!我会及时通知你们的!感谢迄今为止的 cmets!
    猜你喜欢
    • 2012-03-11
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多