summaryrefslogtreecommitdiff
path: root/bin/fb-user-token.php
blob: 02aea744ee09cf36e7200f23f9c7af843f0f2088 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

$basePath = dirname(__FILE__);
$configFile = $basePath . '/../config/facebook.json';

$expiryFile = $basePath . '/fb-user-token-expiry';

if (!file_exists($expiryFile) || trim(file_get_contents($expiryFile)) == date('Y-m-d')) {

    $config = json_decode(file_get_contents($configFile), TRUE);
    $firstLink =
        'https://graph.facebook.com/oauth/client_code?' .
        http_build_query([
            'access_token' => $config['user_token'],
            'client_id' => $config['app_id'],
            'client_secret' => $config['app_secret'],
            'redirect_uri' => 'http://rss.emkael.info/facebook.php'
        ]);
    $firstResponse = json_decode(file_get_contents($firstLink));

    $secondLink =
        'https://graph.facebook.com/oauth/access_token?' .
        http_build_query([
            'client_id' => $config['app_id'],
            'code' => $firstResponse->code,
            'redirect_uri' => 'http://rss.emkael.info/facebook.php'
        ]);
    $secondResponse = json_decode(file_get_contents($secondLink));

    $config['user_token'] = $secondResponse->access_token;

    fwrite(STDERR, 'FB API token renewed, expires on: ' . date('Y-m-d H:i:s', strtotime('+' . $secondResponse->expires_in . ' seconds')) . PHP_EOL);
    file_put_contents($configFile, json_encode($config));
    file_put_contents($expiryFile, date('Y-m-d',  strtotime('+' . ($secondResponse->expires_in - 1440) . ' seconds')));

}

?>