Перейти к основному содержанию

WP File Download Addon: интеграция с Google Drive

1. Вход в Google Drive в WP File Download

Автоматический режим

С этого момента вы можете сэкономить много времени при подключении к серверу Google Drive. Сначала перейдите к плагину Конфигурация > Облачное соединение > Google Drive, а затем просто нажмите на Подключить Google Drive кнопку в правом углу.

 

automatic-google-drive

 

Затем выполните следующие шаги, чтобы завершить подключение.

 

авто-google-drive-подключено

 

Обратите внимание, что мы в настоящее время проходим детальный и сложный процесс проверки с Google, что означает, что наше приложение ещё не одобрено. В результате автоматический режим сейчас недоступен. Вы всё ещё можете использовать ручной режим в это время.

Ручной режим

С учётными данными из предыдущего шага, пожалуйста, перейдите к WordPress Thing администратору и нажмите на меню WP File Download > Конфигурация > вкладка Cloud Connection > раздел настроек Google Drive. Вставьте ваш

  • Идентификатор клиента
  • Секрет клиента

Затем сохраните конфигурацию и нажмите на кнопку «Подключить Google Drive» чтобы войти в ваш аккаунт Google.

 

google-drive-connect

 

После этого появится всплывающее окно, и вы сможете выбрать свой аккаунт.

Если вы не сделали ошибок, вам следует подтвердить авторизацию в новом окне, как показано ниже

 

confirm-autho

 

Подключение должно быть успешным ☺ Одновременно вы увидите опцию "Отслеживать изменения из Google Drive" включена. Если отключить, файлы и папки не будут синхронизированы сразу из Google Drive в ваш WP File Download.

 

watch-change-google-fd

 

Затем вы можете создавать папки Google Drive и загружать в них файлы!

 

create-googledrive-cat

 

2. Как это работает? Что я могу сделать с GG Drive?

Как это работает? 

WP File Download создаст корневую папку на вашем Google Drive с именем сайта.

 

WordPress Thing файловый менеджер: Синхронизация с Google Drive

 

Все папки и подпапки, добавленные в WP File Download, будут синхронизированы в этой папке (WP File Download - {sitename}). И наоборот, все ваши файлы и категории из этой корневой папки на Google Drive будет синхронизировано в вашу панель управления WP File Download на WordPress Thing.

Какие направления синхронизации?

Это работает в обоих направлениях! Вы можете добавить файл из Google Drive и увидеть его в WP File Download или добавить файл в WP File Download и увидеть его в Google Drive. Это также означает, что вы можете управлять файлами WordPress Thing с вашего рабочего стола, используя программное обеспечение синхронизации Google Drive. Это ’ безумие! Да, мы знаем ☺

Также, если вы удалите файл из Google Drive, вам нужно очистить корзину, чтобы удалить его из Google Drive.

 

Файлы Google Drive отправлены в WordPress Thing

 

Избавьтесь от ошибки: error: "invalid_scope при подключении WP File Download к Google Drive"

Google недавно ввёл новый уровень безопасности, который заставляет приложения проходить проверку. Если вы создали приложение с помощью своей учётной записи Google и затем входите из WordPress Thing с той же самой учётной записью, вы не будете видеть эту ошибку.
Эта ошибка появится только в том случае, если вы создали приложение с учётной записью Google и пытаетесь подключиться к Google из WordPress Thing с другой учётной записью.

В этом случае вам необходимо, чтобы ваше приложение было одобрено Google, следуя этому процессу: https://support.google.com/code/contact/oauth_app_verification

 

 

 

3. Создать приложение Google Drive

Интеграция Google Drive распространяется как отдельный аддон. Вам необходимо установить этот аддон (плагин) дополнительно к WP File Download. Аддон также включает интеграцию с Google Team, Dropbox, OneDrive, Amazon S3 и Nextcloud.

Сначала вам нужно приложение Google dev, чтобы подключить ваш веб‑сайт к Google Drive. Перейдите к https://console.cloud.google.com/ и перейдите в левый верхний угол, нажмите Меню‑гамбургер > IAM & Admin > Create a Project.

 

Create-project-1

 

Затем задайте название проекта (без акцентов)

 

название-проекта

 

Затем подождите несколько секунд, пока проект создаётся…

 

 

Если это первый раз, когда вы используете Google Drive API, вам следует перейти к Меню навигации > APIs and Services > Library чтобы активировать его.

 

включить-api

 

В левом меню нажмите на “Навигационное меню > API & сервисы”

 

учетные-данные-меню-1

 

Затем в левом меню “Учётные данные”, на основной панели нажмите “ + Создать учётные данные” >> OAuth client ID.

 

create-Credentials-1

 

Если это первый раз, когда вы используете это, появляется предупреждение: "Чтобы создать OAuth client ID, вы должны сначала настроить экран согласия" вам следует нажать на "Настроить экран согласия" кнопку или перейти к API & Services >> OAuth consent screen. Затем следуйте настройкам проекта.

1. Информация о приложении: Название приложения, электронная почта поддержки пользователей

2. Аудитория:  Внутренняя обычно используется для учетных записей в организации или команде и Внешняя используется для личных учетных записей.

  • Внутренний: ваше приложение ограничено пользователями Google Workspace (известного как G Suite) в вашей организации. Вам не потребуется отправлять приложение на проверку.
  • Внешний: ваше приложение будет доступно любому пользователю с аккаунтом Google, но приложение должно быть публичным и проверенным.

3. Контактная информация: укажите ваш адрес электронной почты

4. Завершить: Согласиться с сервисами Google API

 

конфигурация проекта

 

Наконец, нажмите "Создать" кнопку. После обработки вы будете перенаправлены на Обзор OAuth страницу. Затем нажмите на "Создать OAuth клиент" кнопку.

 

oauth-overview

 

Теперь самый важный шаг.

  • Выбрать “Веб‑приложение” и добавьте название по вашему выбору.
  • Авторизованный JavaScript origin: https://your-domain.com (замените на ваш домен, без слеша, без www.)
  • Авторизованные URI перенаправления: https://your-domain.com/wp-admin/admin.php?page=wpfdAddon-cloud&task=googledrive.authenticate 
    (замените его на ваш домен, либо скопируйте напрямую из настроек плагина для точности)

 

создать-веб-приложение


 

Тогда… вуаля! У вас есть ваш ID и Секрет, чтобы добавить их в конфигурацию WP File Download.

 

oauth-клиент

 

И перейдите к Аудитория вкладке, если it's сейчас Тестирование, вам следует нажать на "Опубликовать приложение" кнопку, чтобы изменить статус. Статус публикации должен быть Продакшн.

 

publishing-status-production

 

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation' (500 Whoops, looks like something went wrong.)

mysqli_sql_exception

HTTP 500 Whoops, looks like something went wrong.

Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

Exception

mysqli_sql_exception

Show exception properties
mysqli_sql_exception {#896
  #sqlstate: "23000"
}
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. foreach ($urls as $translation => $source) {
  2. $elements[] = '("'.mysqli_real_escape_string($this->_database, Request::getInstance()->getLanguage()).'", "'.mysqli_real_escape_string($this->_database, $source).'", "'.mysqli_real_escape_string($this->_database, $translation).'", "'.md5($source).'", "'.md5($translation).'")';
  3. }
  4. $query .= implode(',', $elements);
  5. $query .= ' ON DUPLICATE KEY UPDATE source=VALUES(source), translation=VALUES(translation), hash_source=VALUES(hash_source), hash_translation=VALUES(hash_translation)';
  6. $this->_database->query($query);
  7. }
  8. public function removeUrls($urls)
  9. {
  10. $query = 'DELETE FROM '.mysqli_real_escape_string($this->_database, $this->_database_table_urls).' WHERE (hash_source) IN ';
  1. public function saveUrls($urls) {
  2. if (empty($urls)) {
  3. return;
  4. }
  5. return $this->_database->saveUrls($urls);
  6. }
  7. public function removeUrls($urls) {
  8. if (empty($urls)) {
  9. return;
  1. if (isset($result->url_translations)) {
  2. Defer::getInstance()->defer(function() use ($result) {
  3. $new_urls = $result->url_translations;
  4. $new_urls = get_object_vars($new_urls);
  5. Database::getInstance()->saveUrls((array)$new_urls);
  6. });
  7. }
  8. if (isset($result->urls_untranslated)) {
  9. Defer::getInstance()->defer(function() use ($result) {
Translation->Linguise\Script\Core\{closure}()
  1. }
  2. public function finalize()
  3. {
  4. foreach ($this->_actions as $action) {
  5. call_user_func($action['function'], $action['args']);
  6. }
  7. }
  8. }
  1. Helper::prepareDataDir();
  2. // Finalize defer actions on shutdown
  3. // @codeCoverageIgnoreStart
  4. register_shutdown_function(function() {
  5. Defer::getInstance()->finalize();
  6. Database::getInstance()->close();
  7. });
  8. // @codeCoverageIgnoreEnd
  9. }
Processor->Linguise\Script\Core\{closure}()

Stack Trace

mysqli_sql_exception
mysqli_sql_exception:
Duplicate entry '49263e4176ff53f5ff1efff72d6df4fb-ru' for key 'bk24_linguise_urls.hash_translation'

  at /var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170
  at mysqli->query()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Databases/Mysql.php:170)
  at Linguise\Script\Core\Databases\Mysql->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Database.php:232)
  at Linguise\Script\Core\Database->saveUrls()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Translation.php:119)
  at Linguise\Script\Core\Translation->Linguise\Script\Core\{closure}()
  at call_user_func()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Defer.php:42)
  at Linguise\Script\Core\Defer->finalize()
     (/var/www/staging.joomunited.com/public_html/plugins/system/linguise/vendor/linguise/script-php/src/Processor.php:31)
  at Linguise\Script\Core\Processor->Linguise\Script\Core\{closure}()