点击按钮将图片上传到facebook


Upload a image to facebook on a button click

我正试图通过点击按钮使用PHP将图片上传到Facebook。它似乎不起作用。

HTML按钮代码

<a class="btn" href="test.php?upload=true">Click here to upload this image on your Facebook wall</a>

PHP代码

    <?php
        $act=isset($_GET['upload'])?$_GET['upload']:"";
        if($upload=='true'){
        set_time_limit(50);
        require 'facebook.php';
        // Create our Application instance (replace this with your appId and secret).
        $facebook = new Facebook(array(
                    'appId' => 'FB_APP_ID',
                    'secret' => 'FB_SECRET_KEY',
                ));
        // Get User ID
        $user = $facebook->getUser();
        if ($user) {
        } else {
            $loginUrl = $facebook->getLoginUrl();
            header('Location:' . $loginUrl . '&scope=user_photos,publish_stream');
        }
        ?>
        <?php
        // Login or logout url will be needed depending on current user state.
                if ($user) {
                    if (isset($_GET['upload'])) {
                ?>
                <?php
                        $facebook->setFileUploadSupport(true);
                        $args = array('message' => 'test');
                        copy('http://mysite.com/test.png', 'tmp/file.jpeg');
                        $args['image'] = '@' . realpath('tmp/file.jpeg');
                        $data = $facebook->api('/me/photos', 'post', $args);
                        unlink('tmp/file.jpeg');
                        //assigning users to tag and cordinates
                        $argstag = array('to' => $user);
                        $argstag['x'] = 40;
                        $argstag['y'] = 40;
                        $datatag = $facebook->api('/' . $data['id'] . '/tags', 'post', $argstag);
                        echo 'Success! Check your facebook wall now';
                    } else {
                ?>
                        <a href="test.php?upload=true">Click here to upload this image on your facebook wall</a><br/><br/>
        <?php
                    }
                }

        }
?>

注意:facebook.php是随facebookPHP SDK 一起提供的

将其放入try&catchblock查看发生了什么:

 // ...
 try {
    $facebook->setFileUploadSupport(true);
    $response = $facebook->api(
      '/me/photos/',
      'post',
      array(
        'message' => 'This is my image caption',
        'source' => '@/absolute/path/to/image' // @-sign must be the first character
      )
    );
  }
  catch (FacebookApiException $e) {
    echo "Error: ".$e->getMessage();
  }
  // ...

请确保在"tmp/"(您的意思是"/tmp/"吗?)中有一个调用复制后有效的映像,并确保您具有photo_upload权限。

https://developers.facebook.com/docs/reference/php/facebook-setFileUploadSupport/