Facebook PHP SDK - 必须使用活动访问令牌来查询有关当前用户的信息

时间:2013-04-15 15:12:23

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

我对Facebook PHP SDK有疑问。它总是抛出异常。我尝试了很多这里列出的解决方案,但没有什么对我有用。

似乎Facebook向我返回了有效的访问令牌,因为我在我的应用程序的仪表板中使用调试工具对其进行了测试。

我的情景是什么?

我想通过调用静态函数发布简单内容到用户的墙:

function social_publish($network, $title, $message, $link = '', $image = '') {

    global $_config;

    // Initialize Facebook SDK
    $facebook = new Facebook(array(
                'appId' => $_config['fb_app']['app_id'],
                'secret' => $_config['fb_app']['app_security_key']
            ));

    // Set data
    $attachment = array(
        'name' => $title,
        'caption' => $title,
        'message' => $message,
        'link' => $link,
        'picture' => $image,
        'actions' => array('name' => 'Test', 'link' => 'Link')
    );

    try {

        $access_token = $facebook->getAccessToken(); // returns valid access token

        $uid = $facebook->getUser(); // always return 0

        $result = $facebook->api( '/' . $_config['fb_profile'] . '/feed/', 'post', $attachment); // $_config['fb_profile'] procudes 'me' in this case

    } catch (FacebookApiException $e) {

        echo $e->getMessage();
    }
}

请注意:我不是在处理当地环境。

1 个答案:

答案 0 :(得分:0)

问题解决了它在Facebook的范围请求中要求进行身份验证,因为我决定使用JavaScript SDK - 然后,这是解决方案:

FB.getLoginStatus(function(response) {
    if ( ! response.authResponse ) {
        FB.login(function(response) {
            // handle the response if needed
        }, {scope: 'publish_actions, publish_stream'});
    }
});

谢谢! : - )