Enable and Access Google Drive API
- After creating a project in the Google Developers Console, make sure the Google Drive API is enabled for your project. You will need to generate OAuth 2.0 credentials (Client ID and Client Secret) for accessing Drive API.
- Download the JSON file containing your client credentials. This file will be used in your PHP script for authentication purposes.
Install Google Client Library for PHP
- To interact with Google APIs in PHP, you need the Google Client Library. Use Composer to install the library into your project:
composer require google/apiclient:^2.0
Authenticate and Set Up Drive Service
- Utilize the downloaded credentials file to authenticate and set up the Google Drive service instance. Here's a sample code snippet for authentication:
require 'vendor/autoload.php';
$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->addScope(Google_Service_Drive::DRIVE_FILE);
$service = new Google_Service_Drive($client);
Generate Authentication URL and Obtain Access Token
- For first-time authentication, generate an authentication URL and prompt the user to visit it to obtain an access code. This is essential for obtaining the access token:
$authUrl = $client->createAuthUrl();
printf("Open the following link in your browser:\n%s\n", $authUrl);
echo 'Enter verification code: ';
$authCode = trim(fgets(STDIN));
$accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
$client->setAccessToken($accessToken);
// Store the token for reuse
file_put_contents('token.json', json_encode($client->getAccessToken()));
Refresh the Access Token
- If you already have a stored access token (in ‘token.json’ for example), load it to save time:
$accessToken = json_decode(file_get_contents('token.json'), true);
$client->setAccessToken($accessToken);
if ($client->isAccessTokenExpired()) {
$client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
file_put_contents('token.json', json_encode($client->getAccessToken()));
}
Upload Files to Google Drive
- Create a function to handle file uploads. Use the service object created earlier to add a file to your Google Drive:
$fileMetadata = new Google_Service_Drive_DriveFile(array(
'name' => 'YourFileName.ext'
));
$content = file_get_contents('path/to/your/file');
$file = $service->files->create($fileMetadata, array(
'data' => $content,
'mimeType' => 'application/octet-stream',
'uploadType' => 'multipart',
'fields' => 'id'
));
printf("File ID: %s\n", $file->id);
Conclusion
- The above steps outline how to upload files to Google Drive using PHP. Ensure you manage permissions and OAuth correctly to maintain secure access. Thoroughly test your implementation to handle errors and adapt it to your application's needs.