본문 바로가기
Develop/PHP

Google Cloud API In Laravel(PHP)

by bellsilver7 2022. 6. 30.
728x90
 

Google Cloud API

1. 구글 콘솔 접속 Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 2. 사용자 정보 인증 2-1. API 및 서비스 > 사용자 인증 정보 2-2. "~OAuth 동의 화면을 구성해야 합니..

bellsilver7.tistory.com

지난번 Google Cloud API 에서 OAuth 클라이언트 ID 를 생성했다. 이를 Laravel 프레임웍에서 사용해 파일을 생성해보도록 하겠다.

 

1. google-api-php-client 라이브러리 설치

 

GitHub - googleapis/google-api-php-client: A PHP client library for accessing Google APIs

A PHP client library for accessing Google APIs. Contribute to googleapis/google-api-php-client development by creating an account on GitHub.

github.com

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

댓글