使用 LinkedIn API 发布文章时如何修复未知的取消引用类型 ARRAY
How to fix Unknown dereferenced type ARRAY when posting an article using LinkedIn API
我正在设置 post 到 LinkedIn 的功能,具体取决于用户想要什么 post。这些选项目前只是文本或带有 link 的文本。仅发布文本没有问题,但是当我尝试添加 link 时,我收到来自 LinkedIn 的不明确错误。
我用来将请求传递给 cURL 的代码是:
$Header[] = 'Content-Type: application/json';
$Header[] = 'x-li-format: json';
$Header[] = 'X-Restli-Protocol-Version: 2.0.0';
$Header[] = 'Authorization: Bearer <ACCESS TOKEN>';
$Header[] = 'Content-Length: ' . strlen(json_encode($FieldsArray));
$Curl = curl_init('https://api.linkedin.com/v2/ugcPosts');
curl_setopt($Curl, CURLOPT_POST, true);
curl_setopt($Curl, CURLOPT_HTTPHEADER, $Header);
curl_setopt($Curl, CURLOPT_POSTFIELDS, json_encode($FieldsArray));
curl_setopt($Curl, CURLOPT_RETURNTRANSFER, true);
$Response = curl_exec($Curl);
curl_close($Curl);
$FieldsArray 为以下数组。
array(4) {
["specificContent"]=>
array(1) {
["com.linkedin.ugc.ShareContent"]=>
array(3) {
["media"]=>
array(2) {
["status"]=>
string(5) "READY"
["originalUrl"]=>
string(24) "<URL>"
}
["shareCommentary"]=>
array(1) {
["text"]=>
string(4) "test"
}
["shareMediaCategory"]=>
string(7) "ARTICLE"
}
}
["author"]=>
string(28) "urn:li:organization:<ORGANIZATION ID>"
["lifecycleState"]=>
string(9) "PUBLISHED"
["visibility"]=>
array(1) {
["com.linkedin.ugc.MemberNetworkVisibility"]=>
string(11) "PUBLIC"
}
}
使用不带 URL 和 shareMediaCategory:None returns 的类似数组:
object(stdClass)#15 (1) { ["id"]=> string(32) "urn:li:share:<SHARE ID>" }
我希望与上面的数组类似,但响应是:
Unknown dereferenced type ARRAY for DataMap's schema { "type" : "array", "items" : { "type" : "record", "name" : "ShareMedia", "namespace" : "com.linkedin.ugc", "doc" : "Media that has been shared.", "fields" : [ { "name" : "title", "type" : { "type" : "record", "name" : "AttributedText", "namespace" : "com.linkedin.common", "doc" : "A text with attributes within it", "fields" : [...
如有任何帮助,我们将不胜感激。
谢谢。
由于 JSON 请求对象中的媒体格式不正确,我收到了此错误。但是,我相信在您的情况下,您错误地指定了媒体资产。请参阅以下 API 文档以上传图片并获取用于发布的 digitalMediaAsset ID:https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin#create-an-image-share
在 PHP 之前 json_encoding 请求,以下格式适合我。
$postStatus['specificContent']['com.linkedin.ugc.ShareContent']['shareMediaCategory'] = 'IMAGE';
$postStatus['specificContent']['com.linkedin.ugc.ShareContent']['media'][] = $media;
其中$media本身就是一个数组:
Array
(
[status] => READY
[media] => urn:li:digitalmediaAsset:abc123
)
注意:在您提出请求之前,数字媒体资产可能未完全上传。您可以使用资产 API 检查图像的状态:https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/vector-asset-api
我正在设置 post 到 LinkedIn 的功能,具体取决于用户想要什么 post。这些选项目前只是文本或带有 link 的文本。仅发布文本没有问题,但是当我尝试添加 link 时,我收到来自 LinkedIn 的不明确错误。
我用来将请求传递给 cURL 的代码是:
$Header[] = 'Content-Type: application/json';
$Header[] = 'x-li-format: json';
$Header[] = 'X-Restli-Protocol-Version: 2.0.0';
$Header[] = 'Authorization: Bearer <ACCESS TOKEN>';
$Header[] = 'Content-Length: ' . strlen(json_encode($FieldsArray));
$Curl = curl_init('https://api.linkedin.com/v2/ugcPosts');
curl_setopt($Curl, CURLOPT_POST, true);
curl_setopt($Curl, CURLOPT_HTTPHEADER, $Header);
curl_setopt($Curl, CURLOPT_POSTFIELDS, json_encode($FieldsArray));
curl_setopt($Curl, CURLOPT_RETURNTRANSFER, true);
$Response = curl_exec($Curl);
curl_close($Curl);
$FieldsArray 为以下数组。
array(4) {
["specificContent"]=>
array(1) {
["com.linkedin.ugc.ShareContent"]=>
array(3) {
["media"]=>
array(2) {
["status"]=>
string(5) "READY"
["originalUrl"]=>
string(24) "<URL>"
}
["shareCommentary"]=>
array(1) {
["text"]=>
string(4) "test"
}
["shareMediaCategory"]=>
string(7) "ARTICLE"
}
}
["author"]=>
string(28) "urn:li:organization:<ORGANIZATION ID>"
["lifecycleState"]=>
string(9) "PUBLISHED"
["visibility"]=>
array(1) {
["com.linkedin.ugc.MemberNetworkVisibility"]=>
string(11) "PUBLIC"
}
}
使用不带 URL 和 shareMediaCategory:None returns 的类似数组:
object(stdClass)#15 (1) { ["id"]=> string(32) "urn:li:share:<SHARE ID>" }
我希望与上面的数组类似,但响应是:
Unknown dereferenced type ARRAY for DataMap's schema { "type" : "array", "items" : { "type" : "record", "name" : "ShareMedia", "namespace" : "com.linkedin.ugc", "doc" : "Media that has been shared.", "fields" : [ { "name" : "title", "type" : { "type" : "record", "name" : "AttributedText", "namespace" : "com.linkedin.common", "doc" : "A text with attributes within it", "fields" : [...
如有任何帮助,我们将不胜感激。
谢谢。
由于 JSON 请求对象中的媒体格式不正确,我收到了此错误。但是,我相信在您的情况下,您错误地指定了媒体资产。请参阅以下 API 文档以上传图片并获取用于发布的 digitalMediaAsset ID:https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/share-on-linkedin#create-an-image-share
在 PHP 之前 json_encoding 请求,以下格式适合我。
$postStatus['specificContent']['com.linkedin.ugc.ShareContent']['shareMediaCategory'] = 'IMAGE';
$postStatus['specificContent']['com.linkedin.ugc.ShareContent']['media'][] = $media;
其中$media本身就是一个数组:
Array
(
[status] => READY
[media] => urn:li:digitalmediaAsset:abc123
)
注意:在您提出请求之前,数字媒体资产可能未完全上传。您可以使用资产 API 检查图像的状态:https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/vector-asset-api