SammyK LaravelFacebookSdk - 无法获得访问令牌

时间:2015-03-12 10:13:40

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

我搜索了一个Laravel Facebook SDK,我找到了适用于Laravel 4.2(我的laravel app版本)的this包。我使用这个只是为了获取我的Facebook页面帖子,但我遇到了问题,我的访问令牌每2小时到期,或者在某些情况下由于其他原因如facebook登出等等。

我发现handle expired access tokens有两种方法可以扩展访问令牌,要么使用旧的访问令牌请求新的访问令牌。

问题是如何申请新的访问令牌,因为我将它存储到我的数据库中,我需要一直获取我的Facebook页面帖子?

我已按照this说明操作,但对我而言,它不起作用。

当我使用此代码时:

try
{
    $token = Facebook::getTokenFromRedirect();
    echo "Success<br>";
    print_r($token);
}
catch (FacebookQueryBuilderException $e)
{
    // Failed to obtain access token
    echo 'Error:' . $e->getMessage();
}

我在屏幕上看到的唯一内容是Success,就是这样,就像$token是空的一样。

我还检查了SammyK LaravelFacebookSdk中包含的Facebook Query Builder,并尝试使用getTokenFromCanvas() getTokenFromCanvas() {}}}但我收到此错误:Method getTokenFromCanvas does not exist

有什么想法让这个工作吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,Facebook将返回在2小时后过期的用户访问令牌。您可以将其扩展为长期访问令牌,该令牌将持续60天。

在Laravel Facebook SDK 1.2中获得AccessToken实体后,您可以像the example中所示的那样扩展它:

try {
    $token = $token->extend();
} catch (SammyK\FacebookQueryBuilder\FacebookQueryBuilderException $e) {
    dd($e->getPrevious()->getMessage());
}

在你提到的GitHub issue中:

  

我想要实现的是从我的Facebook页面获取帖子

您可以使用网页访问令牌来抓取您的网页帖子。您可以从/me/accounts endpoint获取页面访问令牌。

如果您使用长期存在的用户访问令牌来获取页面访问令牌,则页面访问令牌将永不过期,因此非常适合存储在您的数据库中以从页面中提取帖子。

more about handling access tokens。祝好运! :)