Редактирование документов Google Spreadsheets через api без использования OAuth2

265
04 октября 2017, 10:11

Всем привет! Задача заключается в том, что есть некоторый скрипт, принимающий ID документа (например, в ссылке https://docs.google.com/spreadsheets/d/1ahWjjkrkYrVJOMn4dyagp_hr8JECvUjj2s-dyYVzaF2/edit ID будет 1ahWjjkrkYrVJOMn4dyagp_hr8JECvUjj2s-dyYVzaF2), который открыт для редактирования по ссылке, и при запуске этого скрипта некоторые данные должны записаться в этот документ. Сейчас это реализовано с использованием OAuth2 авторизации, которая подразумевает подтверждение доступа при первом запуске, создание файла с данными авторизации и работу с ними в дальнейшем, пока не придёт запрос с другим ID документа. В таком случае будет запрошено новое подтверждение и файл будет перезаписан. Авторизация реализуется таким кодом, взятым из доки:

/**
 * Returns an authorized API client.
 * @return Google_Client the authorized client object
 */
function getClient()
{
    $client = new Google_Client();
    $client->setApplicationName(APPLICATION_NAME);
    $client->setScopes(SCOPES);
    $client->setAuthConfig(CLIENT_SECRET_PATH);
    $client->setAccessType('offline');
    $credentialsPath = $this->expandHomeDirectory(CREDENTIALS_PATH);
    if (file_exists($credentialsPath)) {
        $accessToken = json_decode(file_get_contents($credentialsPath), true);
    } else {
        $authUrl = $client->createAuthUrl();
        printf("Open the following link in your browser:\n%s\n", $authUrl);
        print 'Enter verification code: ';
        $authCode = trim(fgets(STDIN));
        $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
        if (!file_exists(dirname($credentialsPath))) {
            mkdir(dirname($credentialsPath), 0700, true);
        }
        file_put_contents($credentialsPath, json_encode($accessToken));
        printf("Credentials saved to %s\n", $credentialsPath);
    }
    $client->setAccessToken($accessToken);
    if ($client->isAccessTokenExpired()) {
        $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        file_put_contents($credentialsPath, json_encode($client->getAccessToken()));
    }
    return $client;
}
/**
 * Expands the home directory alias '~' to the full path.
 * @param string $path the path to expand.
 * @return string the expanded path.
 */
function expandHomeDirectory($path)
{
    $homeDirectory = getenv('HOME');
    if (empty($homeDirectory)) {
        $homeDirectory = getenv('HOMEDRIVE') . getenv('HOMEPATH');
    }
    return str_replace('~', realpath($homeDirectory), $path);
}

Вопрос: есть ли способ редактировать открытые для редактирования по ссылке документы только по api key, без подтверждения? P.S. гуглил.

READ ALSO
php find exact match and delete

php find exact match and delete

Есть код который ищет число в файле, и удаляет его если оно присутствует, а если нет то ничего не делает:

164
Переход по кнопке Submit

Переход по кнопке Submit

Есть <input type="submit" name="button" value="РЕГИСТРАЦИЯ">, после нажатия происходят действия на сервере(запись в бд) и после этого должно переходить на другую...

166
Как провести слияние двух строк в PHP

Как провести слияние двух строк в PHP

Прошу помощи решить данную проблему

152