如何从DB中删除过期的Accesstokens

时间:2014-11-06 11:36:17

标签: php sql facebook-graph-api

<?php
include'config.php';
$items = mysql_query("SELECT * FROM table");
$thispage = $PHP_SELF;
$num = mysql_num_rows($items);
$per_page = 100;
$start = @$_GET['start'];
if(empty($start)) $start = 0;
?>
<center>
<?php
if($start+$per_page<$num){
?>
[<a href="<?php print("$thispage?start=".max(0,$start+$per_page)); ?>">Delete 100 Tokens</a>]
<?php
}

$result = mysql_query("SELECT * FROM table ORDER BY id LIMIT $start,$per_page");
if($result){
while($row = mysql_fetch_array($result))
{
$token = $row[access_token];
$userData = json_decode(file_get_contents('https://graph.facebook.com/me?access_token='.$token.'&fields=name,id'),true);print($userData[name]).'<br/>';
if(!$userData[name]){
mysql_query("
DELETE FROM
table
WHERE
access_token='" . mysql_real_escape_string($token) . "'
");
}
}
}
?>

我有这个代码用于删除过期的访问令牌从数据库但是当我执行它它一次删除所有访问令牌包括有效和过期两个令牌请帮助我如何删除只过期对不起禁止英语。 在此先感谢

3 个答案:

答案 0 :(得分:0)

更改后尝试

if(!$userData[name]){

if(!$userData['name']){

答案 1 :(得分:0)

只需检查每个令牌的到期时间,如果令牌过期时间早于当前日期,则将其删除。

https://developers.facebook.com/docs/facebook-login/access-tokens/#debug

GET /debug_token?
     input_token={input-token}&
     access_token={access-token}

响应

{
    "data": {
        "app_id": 000000000000000, 
        "application": "Social Cafe", 
        "expires_at": 1352419328, 
        "is_valid": true, 
        "issued_at": 1347235328, 
        "scopes": [
            "email", 
            "publish_actions"
        ], 
        "user_id": 1207059
    }

答案 2 :(得分:0)

Graph.facebook.com更改为graph.facebook.me为我解决了这个问题。