Рейтинг:1

Как поделиться фотографиями Google?

флаг eg

Я хотел бы, чтобы все общие альбомы определенной учетной записи Google автоматически попадали на веб-сайт Drupal. Мне удалось установить соединение с «Google_photos_api» и показать все общие альбомы на сайте с помощью кода ниже.

<?php
$GooglePhotosService = \Drupal::service('google_photos_api.client');
пытаться {
  $optParams=массив("pageSize" => 50);
  $SharedAlbumlijst = $GooglePhotosService->googleServicePhotosLibrary->sharedAlbums->listSharedAlbums($optParams);  
  ksm($SharedAlbumlijst);  
  echo '<div id="GooglePhotos" class="grid views-view-grid">';
  эхо '<div class="row">';  
  foreach ($SharedAlbumlijst как $album) {
    echo '<div class="col-6 col-sm-6 col-md-4 col-lg-4 col-xl-3" style="margin-bottom: 10px;">';    
    // Получить некоторые свойства альбома
    $albumId = $album->getId();
    $title = $альбом->getTitle();
    $productUrl = $album->getProductUrl();
    $coverPhotoBaseUrl = $album->getCoverPhotoBaseUrl() . '=w200-h200-c';
    эхо '<h5>' . $название . '</h5>';
    echo '<a href="' . $coverPhotoBaseUrl . '" id="' . $albumId . '">';
    echo '<img src="' . $coverPhotoBaseUrl . '" alt="' . $title . '">';
    эхо '</a>';
    эхо '</div>';
  }
  эхо '</div>';
}
поймать (исключение $e) {
  ксм($е);
}

Проблема, которую я не могу понять, состоит в том, чтобы перечислить все медиа-элементы данного альбома. Код ниже не работает. Я не знаю, как передать в это ID альбома ??

<?php
$GooglePhotosService = \Drupal::service('google_photos_api.client');

пытаться {
  $albumId = 'ANfpKL0unQw8nWACRpVCPj0JxmZ5JHkX_xCecI-VPFxKrFScPPfpE8HakFWvKG3KFVXNnNyigXB0';
  $optParams = ['albumId' => $albumId];
  $mediaItems = $GooglePhotosService->googleServicePhotosLibrary->mediaItems->search($optParams);

  ксм($МедиаЭлементы);
}

поймать (исключение $e) {
  ксм($е);
}

Любая помощь будет здорово! Заранее спасибо!!

Код ошибки:
Сайт обнаружил непредвиденную ошибку. Пожалуйста, повторите попытку позже.
TypeError: Аргумент 1, переданный в Google_Service_PhotosLibrary_Resource_MediaItems::search(), должен быть экземпляром Google_Service_PhotosLibrary_SearchMediaItemsRequest, массивом, вызываемым в C:\Xampp2\htdocs\Demertr\modules\contrib\php\php.module(81): eval()' d в строке 7 в Google_Service_PhotosLibrary_Resource_MediaItems->search() (строка 79 файла vendor\google\apiclient-services\src\Google\Service\PhotosLibrary\Resource\MediaItems.php).

MediaItems.php

класс Google_Service_PhotosLibrary_Resource_MediaItems расширяет Google_Service_Resource {

общедоступная функция поиска (Google_Service_PhotosLibrary_SearchMediaItemsRequest $postBody, $optParams = []) {
    $params = ['postBody' => $postBody];
    $params = array_merge($params, $optParams);
    return $this->call('search', [$params], 'Google_Service_PhotosLibrary_SearchMediaItemsResponse');
  }
}
SearchMediaItemsRequest.php

класс Google_Service_PhotosLibrary_SearchMediaItemsRequest расширяет Google_Model {
  публичный $albumId;
  защищенный $filtersType = 'Google_Service_PhotosLibrary_Filters';
  защищенный $filtersDataType = '';
  публичный $pageSize;
  общедоступный $pageToken;
...
berliner avatar
флаг bd
Привет и добро пожаловать в Drupal Answers! Этот вопрос может привлечь больше внимания и получить лучшие ответы на https://stackoverflow.com/, поскольку он не имеет прямого отношения к Drupal.
Рейтинг:0
флаг bd

На самом деле понятия не имею, но глядя на сообщение об ошибке и документы на https://google.github.io/php-photoslibrary/v1.1.0/classes/Google.Photos.Library.V1.SearchMediaItemsRequest.html (если это правильная версия), я бы сказал, что вам нужно создать экземпляр SearchMediaItemsRequest, установите идентификатор альбома для этого объекта, а затем передайте его в поиск метод. Итак, возможно, что-то вроде этого на основе вашего кода:

$media_request = новый SearchMediaItemsRequest();
$media_request->setAlbumId($albumId);
$mediaItems = $GooglePhotosService->googleServicePhotosLibrary->mediaItems->search($media_request);
Jan Moris avatar
флаг eg
Уважаемый берлинец, Спасибо за вашу реакцию, но я все еще не могу понять это. Я попробовал ваше предложение, но затем я получаю еще одну ошибку: `Ошибка: класс 'SearchMediaItemsRequest' не найден в eval() (строка 11 из modules\contrib\php\php.module(81): код eval()'d).`
berliner avatar
флаг bd
Не делайте этого с помощью модуля PHP. Как обычно! Действительно, не надо! Это плохо! Вместо этого потратьте время на то, чтобы узнать, как работает Drupal, а затем создайте собственный модуль и сделайте это там. Существует множество руководств, которые помогут вам сделать это правильно.
Jan Moris avatar
флаг eg
Я запускаю этот код в своем собственном модуле, только для тестирования я использую модуль php. Но все равно спасибо.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.