728x90
지난번 Google Cloud API 에서 OAuth 클라이언트 ID 를 생성했다. 이를 Laravel 프레임웍에서 사용해 파일을 생성해보도록 하겠다.
1. google-api-php-client 라이브러리 설치
composer require google/apiclient:^2.12.1
2. 인증 및 토큰 발급
Route::get('/drive', function () {
$client = new Google\Client();
$client->setClientId(env('GOOGLE_CLIENT_ID'));
$client->setClientSecret(env('GOOGLE_CLIENT_SECRET'));
$client->setRedirectUri('http://localhost:8000/google-drive/callback');
$client->setScopes([
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
]);
$url = $client->createAuthUrl();
return redirect($url);
});
Route::get('/google-drive/callback', function () {
$client = new Google\Client();
$client->setClientId(env('GOOGLE_CLIENT_ID'));
$client->setClientSecret(env('GOOGLE_CLIENT_SECRET'));
$client->setRedirectUri('http://localhost:8000/google-drive/callback');
$code = request('code');
$access_token = $client->fetchAccessTokenWithAuthCode($code);
return $access_token;
});
위와 같이 작성 후 http://localhost:8000/drive 을 실행하면 계정을 선택하는 화면이 나타나고 Google Cloud Console 에서 사용한 계정을 선택하면 아래와 같이 토큰을 발급받게 된다.
3. 파일 생성
Route::get('/upload', function () {
try {
$client = new Google\Client();
$access_token = '{access_token}';
$client->setAccessToken($access_token);
$service = new Google\Service\Drive($client);
$file = new Google\Service\Drive\DriveFile();
DEFINE('TESTFILE', 'testfile-small.txt');
if (!file_exists(TESTFILE)) {
$fh = fopen(TESTFILE, 'w');
fseek($fh, 1024 * 1024);
fwrite($fh, '!', 1);
fclose($fh);
}
$file->setName('Hello World!');
$service->files->create(
$file,
[
'data' => file_get_contents(TESTFILE),
'mimeType' => 'application/octet-stream',
'uploadType' => 'multipart'
]
);
} catch (\Exception $e) {
echo $e->getMessage();
}
});
{access_token} 에 앞에서 발급 받은 토큰 값을 넣어 코드를 작성 후 http://localhost:8000/upload 를 실행한다.
위와 같이 드라이브에 정상적으로 파일이 생성된 것을 볼 수 있다.
728x90
댓글