A library for making authorization for Google API services easy.
git clone https://github.com/jamesjohnmcguire/GoogleApiAuthorizationPhp
composer require https://packagist.org/packages/digitalzenworks/google-api-authorizer
There is one main class with one main static method. You can specify the authorization mode, such as 'by tokens' or 'service account' You can also use Mode::Discover, which will attempt to go through several different types of authorization until success. If none of the automatic modes succeed and promptUser is true, it will try some of the user interaction modes. You can call it like this:
require_once 'vendor/autoload.php';
use DigitalZenWorks\GoogleApiAuthorization\GoogleAuthorization;
use DigitalZenWorks\GoogleApiAuthorization\Mode;
$client = Authorizer::authorize(
Mode::Discover,
$credentialsFilePath,
$serviceAccountFilePath,
$tokensFilePath,
'Google Drive API File Uploader',
['https://www.googleapis.com/auth/drive'],
'http://localhost:8000/test.php',
['promptUser' => false, 'showWarnings' => false]);
if ($client === null)
{
echo 'Oops, authorization failed';
}
else
{
echo 'Client is initialized and authorized, lets go';
}
The main method parameters are:
Type: | Parameter: |
---|---|
Mode | The Mode to use. |
?string | The standard project credentials json file. |
?string | The service account credentials json file. |
?string | The tokens json file. |
?string | The name of the project requesting authorization. |
?array | The requested scopes of the project. |
?string | The URL which the authorization will complete to. |
?array | Additional options. |
The different modes are:
Mode: | |
---|---|
Discover | Try several different types of authorization until success |
OAuth | Prompt the user for OAuth approval (HTTP) |
Request | Prompt the user for custom approval (CLI) |
ServiceAccount | Use serice account credentials |
Token | Use existing OAuth tokens |
The different options are:
Option: | default | |
---|---|---|
promptUser | If needed, prompt the user for additional action | true |
showWarnings | Output warnings, if present | true |
You can call the authorization modes directly, such as:
$client = Authorizer::authorizeServiceAccount(
$serviceAccountFilePath,
'Google Drive API File Uploader',
['https://www.googleapis.com/auth/drive'],
false);
$client = Authorizer::authorizeToken(
$credentialsFilePath,
$tokensFilePath,
'Google Drive API File Uploader',
['https://www.googleapis.com/auth/drive'],
false);
Using an instanciated object:
$authorizer = new Authorizer('Google Drive API File Uploader',
['https://www.googleapis.com/auth/drive'],
['promptUser' => false, 'showWarnings' => false]);
$client = $authorizer->apiAuthorize(
Mode::Discover,
$this->credentialsFilePath,
$this->serviceAccountFilePath,
$this->tokensFilePath,
'http://localhost:8000/test.php');
View the tests.php or UnitTests.php files for more examples.
Even when using the 'service account' mode, the service account file is optional. If a valid file doesn't exist, it will attempt to use the file specified in the environment variable GOOGLE_APPLICATION_CREDENTIALS.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Please match the current coding style. Most notably:
- One operation per line
- Use complete English words in variable and method names
- Attempt to declare variable and method names in a self-documenting manner
Distributed under the MIT License. See LICENSE
for more information.
James John McGuire - @jamesmc - jamesjohnmcguire@gmail.com
Project Link: https://github.com/jamesjohnmcguire/GoogleApiAuthorizationPhp