API страницы Google+: невозможно опубликовать изображение на странице
Я использую API Pages Google+ для публикации на страницах Google Plus с использованием PHP.
Я могу успешно разместить содержимое / тексты на страницах. Но я не могу разместить изображение с содержимым. Я попробовал это, как указано в документах. Но это не работает.
- Первым методом, который я попробовал, было использование метода {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 ▶}
}
- Второй метод - использование метода загрузки медиа:
Код:
$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: {▶}
}
Я не уверен, какой из методов является лучшим или правильным. Есть что-то, что мне не хватает, чтобы добавить?