Maison > Questions et réponses > le corps du texte
P粉0662240862023-08-27 00:33:27
Dropbox n'offre plus la possibilité de récupérer un nouveau jeton d'accès à long terme. Au lieu de cela, il émet des jetons d'accès à court terme et des jetons d'actualisation facultatifs au lieu de jetons d'accès à long terme.
Les applications peuvent toujours obtenir un accès à long terme en demandant un accès « hors ligne », auquel cas l'application reçoit un « jeton d'actualisation » et peut récupérer de nouveaux jetons d'accès à court terme si nécessaire sans autre intervention manuelle de l'utilisateur. Vous pouvez trouver plus d'informations dans le OAuth Guide et la Authorization Documentation.
Le processus de récupération des jetons d'accès et des jetons d'actualisation facultatifs ne peut pas être entièrement automatisé. Cela nécessite que l'utilisateur le fasse manuellement au moins une fois. Si votre application doit conserver un accès à long terme sans que l'utilisateur ait besoin de réautoriser manuellement à plusieurs reprises, elle doit demander un accès « hors ligne » afin d'obtenir un jeton d'actualisation. Les jetons d'actualisation n'expirent pas et peuvent être stockés et réutilisés pour obtenir de nouveaux jetons d'accès de courte durée en cas de besoin sans que l'utilisateur ait à réautoriser manuellement l'application.
P粉3646420192023-08-27 00:13:53
J'ai trouvé la solution
Étape 1 : Connectez-vous pour la première fois via l'URL d'autorisation/de connexion, après avoir terminé l'authentification, vous obtiendrez un jeton d'accès et un jeton d'actualisation, enregistrez le jeton d'actualisation dans la base de données ou le fichier d'environnement. Il a une longue durée de vie. (https://github.com/kunalvarma05/dropbox-php-sdk/wiki/Authentication-and-Authorization)
Étape 2 : À l'aide du jeton d'actualisation, générez un nouveau jeton d'accès en utilisant le code suivant
public function refreshToken() { $arr = []; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.dropbox.com/oauth2/token'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=refresh_token&refresh_token=<refresh_token_here>"); curl_setopt($ch, CURLOPT_USERPWD, '<APP_KEY>'. ':' . '<APP_SECRET>'); $headers = array(); $headers[] = 'Content-Type: application/x-www-form-urlencoded'; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); $result_arr = json_decode($result,true); if (curl_errno($ch)) { $arr = ['status'=>'error','token'=>null]; }elseif(isset($result_arr['access_token'])){ $arr = ['status'=>'okay','token'=>$result_arr['access_token']]; } curl_close($ch); return $arr; }
Appelez cette fonction pour obtenir un nouveau jeton d'accès