Najdi si v nastavení v Dropboxu App Key a App Secret (jsou na stejné stránce jako byl ten původní token).
V browseru si otevři adresu:
https://www.dropbox.com/oauth2/authorize?client_id=<APP_KEY>&token_access_type=offline&response_type=code
<APP_KEY> samozřejmě nahraď za vlastní.
Povol, na co se tě to tam ptá až se dostaneš na stránku "Access Code Generated". Ten kód si zkopíruj, schovej a nikomu ho neukazuj.
<?php
$code = "<autorizační kód získaný výše>";
$client_id = "<APP_KEY>";
$client_secret = "<APP_SECRET>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.dropbox.com/oauth2/token");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=authorization_code&code=$code&client_id=$client_id&client_secret=$client_secret");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response, true);
$refresh_token = $response['refresh_token'];
echo "Refresh Token: $refresh_token";
?>
Tím bys měl získat Refresh Token, který neexpiruje (díky token_access_type=offline) na začátku.
No a nakonec zavoláš:
<?php
$refresh_token = "<REFRESH_TOKEN>";
$client_id = "<APP_KEY>";
$client_secret = "<APP_SECRET>";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.dropboxapi.com/oauth2/token");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=refresh_token&refresh_token=$refresh_token&client_id=$client_id&client_secret=$client_secret");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$headers = array();
$headers[] = "Content-Type: application/x-www-form-urlencoded";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response, true);
$access_token = $response['access_token'];
echo "Access Token: $access_token";
?>
Címž pokaždé získáš platný Access Token.