0

我正在使用 AMFPHP,并在 php 中编写了一个小函数,以便在调用时在 facebook 中发布:

function postear($pregunta,$winoption,$loseoption) {
    require_once("../../facebook.php");
    Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false;

    $facebook = new Facebook(array(
        'appId'  => 'xxxxxxxxxxxxx',
        'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'cookie' => false
    ));

    $session = $facebook->getSession();
    $token = $session['access_token'];

    //echo "Post successful !"; 
    $facebook->api( '/me/feed', 'POST', array ( 'message' => '','link' => 'http://www.facebook.com/apps/myapp','name' => 'dummy name'));
}

我收到此错误:

message = "faultCode:AMFPHP_RUNTIME_ERROR faultString:'必须使用活动访问令牌来查询有关当前用户的信息。'

我对 Facebook 的图形 api 不是很熟悉,而且有点困惑,因为有时我可以通过调用我的函数来发布正确的信息,而其他时候会给我上面的错误。也许我需要以某种方式将令牌传递给我的发布电话?在我登录 Facebook 的调用中,“cookie”参数的目的是什么?

此外,访问令牌是唯一的?还是每次有人登录应用程序时都会生成一个不同的令牌?。

感谢您的指导并感谢您的帮助。

4

1 回答 1

1

如果您没有为您尝试验证的用户创建的应用程序请求离线访问,那么您需要在应用程序运行之前登录到 facebook。它与 AMFPHP 没有任何关系。

我不知道您正在运行什么样的环境,但请查看本教程。你应该能够收集你需要什么来让你的应用程序运行。

    if (isset($_POST['tt'])){
        try {
            $statusUpdate = $facebook->api('/me/feed', 'post', array('message'=> $_POST['tt'], 'cb' => ''));
        } catch (FacebookApiException $e) {
            d($e);
        }

请注意,$_POST['tt'] 是由示例代码中的表单设置的变量。例如,您可以使用任何您想要的东西。

$statusupdate = $facebook->api('/me/feed', 'post', array('message'=>$myMessage, 'cb'=>'');

密切关注第 3 步。在该代码示例中,他们提供了一些 FBML 标记,这些标记将负责在您的页面上放置一个登录/注销按钮,该按钮将处理用户登录。然后,您不必在登录了 facebook 的浏览器中维护另一个选项卡。祝你好运!

于 2010-10-19T16:26:30.587 回答