extern сообщает компилятору доверять вам, что память для этой переменной объявлена в другом месте, поэтому она не пытается выделить / проверить память.
Поэтому вы можете скомпилировать файл, который ссылается на extern, но вы не можете связать, если эта память не была объявлена где-то.
Полезно для глобальных переменных и библиотек, но опасно потому что компоновщик не устанавливает проверку.
401 unauthorized_client
blockquote>Означает, что ваш код не был авторизован. Если вы хотите получить доступ к личным данным пользователя, вам необходимо войти в систему. Для доступа к API Google вашему коду необходим токен доступа.
То, что вы должны сделать, это авторизовать свой код один раз, используя Oauth2 в браузере, сохранить токен обновления где-нибудь и попросить, чтобы задание cron прочитало токен обновления и запросило новый токен доступа до его запуска.
Предполагая, что у вас есть учетная запись, которую вы пытаетесь вставить в нее, вы также можете рассмотреть возможность использования служебной учетной записи.
Обновить токен
Если вы храните токен обновления в базе данных, вы должны назначить его своему клиенту, прежде чем запускать здесь свой код. Я делаю это с токеном обновления, хранящимся в переменная сеанса.
$client->refreshToken(
401 unauthorized_client
blockquote>Означает, что ваш код не был авторизован. Если вы хотите получить доступ к личным данным пользователя, вам необходимо войти в систему. Для доступа к API Google вашему коду необходим токен доступа.
То, что вы должны сделать, это авторизовать свой код один раз, используя Oauth2 в браузере, сохранить токен обновления где-нибудь и попросить, чтобы задание cron прочитало токен обновления и запросило новый токен доступа до его запуска.
Предполагая, что у вас есть учетная запись, которую вы пытаетесь вставить в нее, вы также можете рассмотреть возможность использования служебной учетной записи.
Обновить токен
Если вы храните токен обновления в базе данных, вы должны назначить его своему клиенту, прежде чем запускать здесь свой код. Я делаю это с токеном обновления, хранящимся в переменная сеанса.
[110]SESSION['refresh_token']);