ログインせずに PHP で Dropbox API のアクセス トークンを更新する方法
P粉239164234
2023-08-26 11:28:49
<p>https://github.com/kunalvarma05/dropbox-php-sdk を使用して Dropbox にファイルをアップロードしています。 </p>
<p>ここでは、Dropbox を使用するユーザーは必要ありません。Dropbox にファイルをアップロードできるように内部ユーザーのみが使用します。 </p>
<p>Dropbox アプリからアクセス トークンを生成したところ、すべて正常に動作しましたが、しばらくするとトークンの有効期限が切れてしまいます。トークンを再生成するために Oauth ログインを実行しましたが、新しいトークンもしばらくすると期限切れになります。 </p>
<p>ユーザーが新しいファイルをアップロードするたびにスクリプトがファイルを Dropbox にアップロードできるように、トークンを再生成するか、有効期間の長いトークンを取得するにはどうすればよいですか? </p>
<p>この簡単なコードを使用しています</p>
<pre class="brush:php;toolbar:false;">include('dropbox/vendor/autoload.php');
$app = new DropboxApp("client_id", "client_secret", 'access_token');
$dropbox = 新しい Dropbox($app);
$data = []; // ここでデータベースからファイルのリストを取得します
if (!$data->isEmpty()) {
foreach ($data を $list) {
$filePath = 'フォルダパス/'.$list->ファイル名;
$fileName = $list->ファイル名;
試す {
// パスから Dropbox ファイルを作成
$dropboxFile = 新しい DropboxFile($filePath);
// ファイルを Dropbox にアップロードします
$uploadedFile = $dropbox->upload($dropboxFile, "/folder_name/" . $fileName, ['autorename' => true]);
// ファイルがアップロードされました
echo $uploadedFile->getPathDisplay();
} キャッチ (DropboxClientException $e) {
print_r($e->getMessage());
}
}
}</pre></p>
Dropbox では、新しい長期アクセス トークンを取得するオプションが提供されなくなりました。代わりに、長期アクセス トークンの代わりに、短期アクセス トークンとオプションのリフレッシュ トークンを発行します。
アプリケーションは、「オフライン」アクセスを要求することで長期アクセスを取得できます。その時点で、アプリケーションは「リフレッシュ トークン」を受け取り、ユーザーが手動で介入しなくても、必要に応じて新しい短期アクセス トークンを取得できます。詳細については、OAuth ガイド および Authorization Documentation を参照してください。
アクセス トークンとオプションのリフレッシュ トークンを取得するプロセスは、完全に自動化することはできません。これには、ユーザーが少なくとも 1 回は手動で行う必要があります。ユーザーが繰り返し手動で再認証する必要がなく、アプリケーションが長期的なアクセスを維持する必要がある場合は、リフレッシュ トークンを取得するために「オフライン」アクセスを要求する必要があります。リフレッシュ トークンには有効期限がなく、保存して再利用して、必要なときにユーザーがアプリケーションを手動で再認証することなく、新しい短期間のアクセス トークンを取得できます。
解決策を見つけました
ステップ 1: 認可/ログイン URL から初めてログインします。認証が完了すると、アクセス トークンとリフレッシュ トークンが取得されます。リフレッシュ トークンをデータベースまたは環境ファイルに保存します。長寿命です。 (https://github.com/kunalvarma05/dropbox-php-sdk/wiki/Authentication-and-Authorization)
ステップ 2: リフレッシュ トークンを使用し、次のコードを使用して新しいアクセス トークンを生成します
リーリーこの関数を呼び出して新しいアクセス トークンを取得します