API страницы Google+: невозможно опубликовать изображение на странице

Я использую API Pages Google+ для публикации на страницах Google Plus с использованием PHP.

Я могу успешно разместить содержимое / тексты на страницах. Но я не могу разместить изображение с содержимым. Я попробовал это, как указано в документах. Но это не работает.

  1. Первым методом, который я попробовал, было использование метода {preview: true}, из которого я могу извлечь идентификатор вложения, а затем использовать его для публикации изображения. Но проблема в том, что я не получаю ответ, содержащий идентификатор вложения или что-либо, связанное с вложениями.

коды:

    $service = new Google_Service_PlusPages($this->client);

    $access = new Google_Service_PlusPages_Acl();
    $access->setKind('plus#acl');
    $access->setItems([['type' => 'public']]);

    $image = new Google_Service_PlusPages_ActivityObjectAttachmentsImage();
    $image->setUrl('https://lh5.googleusercontent.com/-Jg9IjAjF9s0/AAAAAAAAAAI/AAAAAAAAAAA/Tk-OJDOIT5U/photo.jpg');
    $image->setType('image/jpeg');
    $image->setHeight(100);
    $image->setWidth(100);

    $fullImage = new Google_Service_PlusPages_ActivityObjectAttachmentsFullImage();
    $fullImage->setUrl('https://lh5.googleusercontent.com/-Jg9IjAjF9s0/AAAAAAAAAAI/AAAAAAAAAAA/Tk-OJDOIT5U/photo.jpg');
    $fullImage->setType('image/jpeg');
    $fullImage->setHeight(150);
    $fullImage->setWidth(134);

    $attachments = new Google_Service_PlusPages_ActivityObjectAttachments();
    $attachments->setUrl('https://lh5.googleusercontent.com/-Jg9IjAjF9s0/AAAAAAAAAAI/AAAAAAAAAAA/Tk-OJDOIT5U/photo.jpg');
    $attachments->setContent('Image Content');
    $attachments->setObjectType('image/jpeg');
    $attachments->setDisplayName('Test Photo');
    $attachments->setImage($image);
    $attachments->setFullImage($fullImage);

    $object = new Google_Service_PlusPages_ActivityObject();
    $object->setContent($caption);
    $object->setAttachments($attachments);
    $object->setUrl($imagePath);

    $activity = new Google_Service_PlusPages_Activity();
    $activity->setKind('plus#activity');
    $activity->setAccess($access);
    $activity->setVerb('post');
    $activity->setObject($object);
    $responsePreview = $service->activities->insert($pageId, $activity, ['preview'=>true]);

Ответ после этого выглядит следующим образом:

Google_Service_PlusPages_Activity {#624 ▼
  #internal_gapi_mappings: []
  #accessType: "Google_Service_PlusPages_Acl"
  #accessDataType: ""
  #actorType: "Google_Service_PlusPages_ActivityActor"
  #actorDataType: ""
  +address: null
  +annotation: null
  +crosspostSource: null
  +etag: ""some-alpha-numeric-characters""
  +geocode: null
  +id: null
  +kind: "plus#activity"
  #locationType: "Google_Service_PlusPages_Place"
  #locationDataType: ""
  #objectType: "Google_Service_PlusPages_ActivityObject"
  #objectDataType: ""
  +placeId: null
  +placeName: null
  #providerType: "Google_Service_PlusPages_ActivityProvider"
  #providerDataType: ""
  +published: null
  +radius: null
  +title: null
  +updated: null
  +url: null
  +verb: "post"
  #modelData: []
  #processed: []
  +"object": Google_Service_PlusPages_ActivityObject {#600 ▼
    #collection_key: "attachments"
    #internal_gapi_mappings: []
    #actorType: "Google_Service_PlusPages_ActivityObjectActor"
    #actorDataType: ""
    #attachmentsType: "Google_Service_PlusPages_ActivityObjectAttachments"
    #attachmentsDataType: "array"
    +content: "Test post for google plus Image"
    +id: null
    +objectType: null
    +originalContent: null
    #plusonersType: "Google_Service_PlusPages_ActivityObjectPlusoners"
    #plusonersDataType: ""
    #repliesType: "Google_Service_PlusPages_ActivityObjectReplies"
    #repliesDataType: ""
    #resharersType: "Google_Service_PlusPages_ActivityObjectResharers"
    #resharersDataType: ""
    #statusForViewerType: "Google_Service_PlusPages_ActivityObjectStatusForViewer"
    #statusForViewerDataType: ""
    +url: "https://lh5.googleusercontent.com/-Jg9IjAjF9s0/AAAAAAAAAAI/AAAAAAAAAAA/Tk-OJDOIT5U/photo.jpg"
    #modelData: []
    #processed: []
  }
  +"access": Google_Service_PlusPages_Acl {#620 ▶}
}
  1. Второй метод - использование метода загрузки медиа:

Код:

    $service = new Google_Service_PlusPages($this->client);

    $media = new Google_Service_PlusPages_Media();
    $media->setKind('plus#media');
    $media->setDisplayName('Test Photo');
    $media->setUrl('https://lh5.googleusercontent.com/-Jg9IjAjF9s0/AAAAAAAAAAI/AAAAAAAAAAA/Tk-OJDOIT5U/photo.jpg');
    $media->setMediaUrl('https://lh5.googleusercontent.com/-Jg9IjAjF9s0/AAAAAAAAAAI/AAAAAAAAAAA/Tk-OJDOIT5U/photo.jpg');
    $media->setHeight(100);
    $media->setWidth(100);

    $responseMedia = $service->media->insert($pageId, 'cloud', $media);

И это ответ так:

Google_Service_Exception {#620 ▼
  #errors: array:1 [▶]
  #message: """
    {\n
     "error": {\n
      "errors": [\n
       {\n
        "domain": "global",\n
        "reason": "invalid",\n
        "message": "Invalid Value"\n
       }\n
      ],\n
      "code": 400,\n
      "message": "Invalid Value"\n
     }\n
    }\n
    """
  #code: 400
  #file: "/vendor/google/apiclient/src/Google/Http/REST.php"
  #line: 118
  trace: {▶}
}

Я не уверен, какой из методов является лучшим или правильным. Есть что-то, что мне не хватает, чтобы добавить?

0 ответов

Другие вопросы по тегам