Первое, что вам нужно сделать, это решить, к каким данным вы будете получать доступ.
- это ваша учетная запись или ваш лист, к которым у вас как у разработчика есть доступ.
- это лист, принадлежащий другой учетной записи пользователя.
Если это первый вариант, вам следует воспользоваться служебной учетной записью.Клиентская библиотека google apis php обеспечит обновление доступа, и вам не нужно об этом беспокоиться.Просто возьмите адрес электронной почты учетной записи службы и поделитесь листом, к которому вы хотите получить доступ, с пользователем учетной записи службы.
Если это второй вариант, и вам нужен доступ к учетной записи пользователя.Тогда вам, вероятно, нужно будет использовать браузер.Пользователь должен будет аутентифицировать ваше приложение, как только вы сможете сохранить токен обновления, и тогда клиентская библиотека php поможет вам, получив новый токен доступа, когда это будет необходимо.Вам нужно будет посмотреть это решение, так как токены обновления должны быть долгоживущими и не иметь срока действия, однако, по моему опыту, они могут истекать время от времени, и вам нужно будет снова запросить авторизацию у пользователя.
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