从未使用2016 Facebook API过期页面令牌?

时间:2016-01-27 01:41:57

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

我目前正在制作一款应用程序,将高中学生与非营利组织联系起来,以帮助管理他们的社交媒体页面并获得社区服务时间。

我们为每位学生提供一个社会影响力分数,该分数是根据他们的基金会为基金会所获得的喜欢,评论和分享的数量来计算的。我们正在尝试创建一个服务器,该服务器使用永不过期的页面访问令牌从这些Facebook页面中提取数据。如果我们尝试持续检索数据,这是否需要登录脚本?此外,我们的代码一直显示错误。

它出了什么问题?

<?php
    // Defining FB SDK with absolute paths
    define('FACEBOOK_SDK_V4_SRC_DIR', 'http://www.website.com/src/Facebook/');
    require 'http://www.website.com/src/Facebook/autoload.php';

    use Facebook\FacebookSession;
    use Facebook\FacebookRequest;
    use Facebook\GraphUser;
    use Facebook\FacebookRequestException;

    FacebookSession::setDefaultApplication(‘App ID’,’App Secret’);

    $session = new FacebookSession(‘Never expiring page access token’);

    try {
        $data = (new FacebookRequest(
                    $session, 'GET', '/1503911716546178/posts'
                ))->execute()->getGraphObject()->getPropertyAsArray("data");

        foreach ($data as $post){
            $postId = $post->getProperty('id');
            $postMessage = $post->getProperty('message');
            print "$postId - $postMessage <br />";
        }
    } catch (FacebookRequestException $e) {
    // The Graph API returned an error
    } catch (\Exception $e) {
    // Some other error occurred
    }
?>

1 个答案:

答案 0 :(得分:0)

当然,您需要一个登录脚本来获取页面令牌,但这只是一次性的事情。获取扩展页面令牌后,您可以将其存储在数据库中,无需用户交互即可使用它。

有关令牌及其生成方式的更多信息:

我建议使用JavaScript SDK进行登录,它比PHP SDK更容易处理,可用性更好(没有重定向)。例如:http://www.devils-heaven.com/facebook-javascript-sdk-login/

关于你的代码:很难说没有实际的错误消息,但是没有App ID或Secret,并且没有令牌(不要在STACKOVERFLOW上发布你的秘密或任何令牌)。确保您使用的是有效令牌,您可以在调试器中对其进行测试:https://developers.facebook.com/tools/debug/