로그인하지 않고 PHP에서 Dropbox API의 액세스 토큰을 새로 고치는 방법
P粉239164234
2023-08-26 11:28:49
<p>https://github.com/kunalvarma05/dropbox-php-sdk를 사용하여 보관용 계정에 파일을 업로드하고 있습니다. </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단계: 처음으로 인증/로그인 URL을 통해 로그인하고, 인증을 완료한 후 액세스 토큰과 새로 고침 토큰을 받게 되며, 새로 고침 토큰을 데이터베이스 또는 환경 파일에 저장합니다. 수명이 길다. (https://github.com/kunalvarma05/dropbox-php-sdk/wiki/Authentication-and-Authorization)
2단계: 새로 고침 토큰을 사용하여 다음 코드를 사용하여 새 액세스 토큰을 생성하세요
으아악새 액세스 토큰을 얻으려면 이 함수를 호출하세요