我正在构建一个将朋友数据导入本地数据库的应用程序,并且工作正常。访问cron的用户配置文件
我正在尝试创建一个由每日cron运行的脚本,该脚本将迭代本地数据库中的用户配置文件并更新好友数据。
我正在使用PHP SDK。
我已启用depreacte_offline_access标志。
这是否意味着访问令牌将在60天内自动过期,还是我需要做其他事情?
如果用户在同一浏览器中签出应用程序或Facebook,我仍然可以从cron脚本中检索配置文件数据?
我是正确的思维,所有我需要做的是retrive与访问令牌:
$access_token = $facebook->getAccessToken();
然后将其存储在数据库中,然后设置访问令牌:
$facebook->setAccessToken($new_access_token);
然后用
$facebook->getUser('/me');
?
另外我如何查看访问令牌的过期日期?
下面是一个脚本来遍历和retreive配置文件,但如果我在浏览器中运行它只适用于当前登录用户或我得到异常“OAuthException:错误验证访问令牌:会话无效,因为用户注销“。
<?php
require_once(THEME_INCLUDES_PATH . 'facebook.php');
$config = array();
$config['appId'] = APP_ID;
$config['secret'] = APP_SECRET;
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);
$sql = "SELECT `access_token` FROM `fb_user`";
$result = $db1->db_query($sql);
while($details = $db1->db_fetch_array($result)){
if($details['access_token']){
$facebook->setAccessToken($details['access_token']);
$fb_user = $facebook->getUser('/me');
if($fb_user){
try {
$fb_profile = $facebook->api('/me');
print_r($fb_profile);
}
catch (FacebookApiException $e){
echo $e;
$fb_user = false;
}
}
}
}
?>
这基本上是正确的,但由于其他原因令牌可能失效(正如我在我的回答中提到的)。 – 2012-04-14 09:53:46
我的理解是,一旦用户从站点获得有效访问权限,cron脚本将能够访问其配置文件,但不会延长访问令牌的过期时间。所以主要问题是启用offline_access标志似乎不会自动使过期日期持续60天,而我不确定我需要做什么?另一件事是,似乎没有一个可以导致访问令牌失效的完整记录的事件列表。 – 2012-04-14 09:55:42
不要删除您的评论,这会让以后有谁阅读它时感到困惑。我用更多的信息编辑了我的答案。 – 2012-04-14 10:12:58