我搜索了一个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
。
有什么想法让这个工作吗?
答案 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。祝好运! :)