由于身份验证问题,无法发布到Facebook墙上?

时间:2012-07-28 21:52:38

标签: php facebook

我无法将以下代码发布到用户ID为514559322的用户的墙上。但是,如果我用字符串'me'替换$ uid的值,我可以发布到我自己的墙上。

<?php
require_once "../src/facebook.php";

$app_id = "my app id";
$app_secret = "my app secret";
$uid = 514559322;

// Init facebook api.
$facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret,
        'cookie' => true
));

// Get the url to redirect for login to facebook
// and request permission to write on the user's wall.
$login_url = $facebook->getLoginUrl(
    array('scope' => 'publish_stream')
);

// If not authenticated, redirect to the facebook login dialog.
// The $login_url will take care of redirecting back to us
// after successful login.
if (! $facebook->getUser()) {
    echo <<< EOT
<script type="text/javascript">
top.location.href = "$login_url";
</script>;
EOT;

    exit;
}

// Do the wall post.
$facebook->api("/$uid/feed", "post", array(
    message => "Hello win95",
    picture => "http://cdn.papyimg.com/wp-content/uploads/2011/03/Windows-95-500x312.png",
    link => "http://en.wikipedia.org/wiki/Windows_95",
    name => "Go windows 95",
    caption => "Caption - this is the best operating system in the world!"
));
?>

如何允许我的php脚本使用uid 514559322发布用户的墙?

在api调用周围添加try catch循环之后,这是我得到的Exception消息:

OAuthException: (#1) An error occured while creating the share

那么我的代码在哪里提供身份验证信息?或适当的auth令牌?

2 个答案:

答案 0 :(得分:1)

您的用户需要为“offline_access,publish_stream”授权您的应用(尽管现在正在替换,请参阅此处http://developers.facebook.com/roadmap/offline-access-removal/)。

然后您可以在api调用中注入令牌

$res = $facebook->api('/me/feed', 'POST', $post);

其中$ post是$ access_token和$ message

的数组

答案 1 :(得分:1)

你忘记了access_token param:

// Do the wall post.
$facebook->api("/$uid/feed", 'post', array(
    'access_token' => $facebook->getAccessToken(),
    'message' => "Hello win95",
    'picture' => "http://cdn.papyimg.com/wp-content/uploads/2011/03/Windows-95-500x312.png",
    'link' => "http://en.wikipedia.org/wiki/Windows_95",
    'name' => "Go windows 95",
    'caption' => "Caption - this is the best operating system in the world!"
));

或者,您需要offline_access权限,这是不好的,因为很快就会弃用..