使用Graph API将图像发布到Facebook

时间:2014-07-07 11:36:39

标签: php facebook facebook-graph-api facebook-php-sdk

我从Facebook页面获取代码,将照片发布到用户的墙上(帐号)。

以下是我的 PostToFB.php 文件:

<?php
    include_once "facebook.php";
    ini_set("display_errors",0);

    //configuring application to post.
    $app_id = "YOUR_APP_ID";
    $app_secret = "YOUR_APP_SECRET";
    $post_login_url = "YOUR_REDIRECT_URL";

    $code = $_REQUEST["code"];

    //Obtain the access_token with publish_stream permission
    if(empty($code)){
        $dialog_url= "http://www.facebook.com/dialog/oauth?"
                . "client_id=" .  $app_id
                . "&redirect_uri=" . urlencode( $post_login_url)
                .  "&scope=publish_stream";
        echo("<script>top.location.href='" . $dialog_url
                . "'</script>");
    }
    else {
        $token_url="https://graph.facebook.com/oauth/access_token?"
                . "client_id=" . $app_id
                . "&redirect_uri=" . urlencode( $post_login_url)
                . "&client_secret=" . $app_secret
                . "&code=" . $code;
        $response = file_get_contents($token_url);
        $params = null;
        parse_str($response, $params);
        $access_token = $params['access_token'];

        // Show photo upload form to user and post to the Graph URL
        $graph_url= "https://graph.facebook.com/me/photos?"
                . "access_token=" .$access_token;

        echo '<html><body>';
        echo '<form enctype="multipart/form-data" action="'
                .$graph_url .' "method="POST">';
        echo 'Please choose a photo: ';
        echo '<input name="source" type="file"><br/><br/>';
        echo '<input type="submit" value="Upload"/><br/>';
        echo '</form>';
        echo '</body></html>';
    }
?>

但这不起作用。我得到输出:

{
   "error": {
      "message": "(#200) Permissions error",
      "type": "OAuthException",
      "code": 200
   }
}

你能帮我解决这个问题吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

这段代码非常好用。在我看来,唯一可能的原因是你没有授予照片上传的许可。从此处检查您已向应用授予的权限:https://www.facebook.com/settings?tab=applications

enter image description here

如果仍然没有帮助,您可以创建一个新的应用程序,然后再试一次;因为这段代码是正确的。

修改

不推荐使用

publish_stream,请尝试使用publish_actions