Первое, что вам нужно понять, - это разница между частными и общедоступными данными. Личные данные принадлежат пользователю, а общедоступные данные являются общедоступными, каждый может получить к ним доступ.
Данные с диска Google являются частными данными пользователя. Чтобы получить к нему доступ, вы должны иметь разрешение пользователя, которому он принадлежит. Наиболее распространенный способ получения этого разрешения - использование Oauth2 и отображение экрана согласия, который вы видите в коде, который у вас сейчас есть. Хотя есть и другой вариант.
Если учетная запись, к которой вы обращаетесь, является вашей собственной, которую вы, как разработчик, можете контролировать, тогда вы можете использовать служебную учетную запись. Сервисные учетные записи используются для проверки подлинности сервера. Сервисные аккаунты предварительно авторизованы. Что вы будете делать, это взять адрес электронной почты учетной записи службы и предоставить общий доступ к каталогу или файлу в вашей учетной записи на диске Google, к которому вы хотите иметь доступ. Как только вы предоставите ему доступ, он получит доступ, и ему не нужно будет входить в систему.
require_once __DIR__ . '/vendor/autoload.php';
// Use the developers console and download your service account
// credentials in JSON format. Place the file in this directory or
// change the key file location if necessary.
putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__.'/service-account.json');
/**
* Gets the Google client refreshing auth if needed.
* Documentation: https://developers.google.com/identity/protocols/OAuth2ServiceAccount
* Initializes a client object.
* @return A google client object.
*/
function getGoogleClient() {
return getServiceAccountClient();
}
/**
* Builds the Google client object.
* Documentation: https://developers.google.com/api-client-library/php/auth/service-accounts
* Scopes will need to be changed depending upon the API's being accessed.
* array(Google_Service_Analytics::ANALYTICS_READONLY, Google_Service_Analytics::ANALYTICS)
* List of Google Scopes: https://developers.google.com/identity/protocols/googlescopes
* @return A google client object.
*/
function getServiceAccountClient() {
try {
// Create and configure a new client object.
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope([YOUR SCOPES HERE]);
return $client;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
мой образец на служебных счетах. serviceaccount.php