我正在構建一個將朋友數據導入本地數據庫的應用程序,並且工作正常。訪問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