#php #api #linkedin #php-curl
#php #API #LinkedIn #php-curl
Вопрос:
У меня возникли трудности с получением общего доступа к linkedin. Я пытаюсь опубликовать общий доступ к LinkedIn через linkedin api v2, и каждый раз, когда я делаю запрос post, я получаю ответ на запрос с истекшим временем ожидания (статус 504) с сервера. Вот мой код :
$url = https://api.linkedin.com/v2/ugcPosts?oauth2_access_token=".$row[0]['accesstoken'];
$fields = '{
"author": "urn:li:person:XXX",
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {
"text": "Hello World! This is my first Share on LinkedIn!"
},
"shareMediaCategory": "NONE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}';
$headers = array(
'Content-Type' => 'application/json',
'X-Restli-Protocol-Version' => '2.0.0'
'Authorization' => 'Bearer'. $token);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($curl);
And here is the error message :
{
"message": "Request timed out",
"status": 504
}
Ответ №1:
Попробуйте приведенный ниже код:
$url = "https://api.linkedin.com/v2/ugcPosts";
$headers = array('Content-Type: application/json','X-Restli-Protocol-Version: 2.0.0','x-li-format: json','Authorization: Bearer '.$token);
$fields = '{
"author": "urn:li:person:*Person URN ID*",
"lifecycleState": "PUBLISHED",
"specificContent": {
"com.linkedin.ugc.ShareContent": {
"shareCommentary": {
"text": "Hello World! This is my first Share on LinkedIn!"
},
"shareMediaCategory": "NONE"
}
},
"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
}';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
$httpCode = curl_getinfo($curl , CURLINFO_HTTP_CODE); // this results 0 every time
$response = curl_exec($curl);
if ($response === false)
$response = curl_error($curl);
echo stripslashes($response);
curl_close($curl);
-
Правильный URL-адрес вызова API —
https://api.linkedin.com/v2/ugcPosts
(вам не нужно включать?oauth2_access_token=
в URL) -
По какой-то причине формат массива заголовков, который вы определили, выдает ошибку. Итак, я изменил его.
-
Идентификатор УРНЫ пользователя должен быть заменен идентификатором урны пользователя, который должен быть сгенерирован другим вызовом API — см. URN ID API для получения более подробной информации о том, как этого добиться.
Комментарии:
1. Спасибо. Но когда я запускаю с измененным кодом, я получаю приведенное ниже сообщение об ошибке. {«serviceErrorCode»: 65604, «сообщение»: «Пустой токен доступа oauth2», «статус»: 401}
2. @Divyashree, ммм … Я не получаю никакой ошибки. Не могли бы вы, пожалуйста, обновить весь код, который вы используете прямо сейчас.
3. @Divyashree… рад узнать, что вы решили эту проблему. Но я получаю ошибку «Предоставлен токен множественного доступа», когда я использую этот URL, вот почему я изменил его.
Ответ №2:
ПРОБЛЕМА РЕШЕНА
Добавлен access_token как в URL, так и в заголовке. Теперь код запущен. В остальном все остается по-прежнему.
$url = "https://api.linkedin.com/v2/ugcPosts?oauth2_access_token=".$this->accesstoken;
$headers = array('Content-Type:application/json','X-Restli-Protocol-Version:2.0.0','x-li-format: json','Authorization: Bearer'.$this->accesstoken);
Комментарии:
1. Но как нам получить access_token? Я получаю следующую ошибку. { «serviceErrorCode»: 65604, «сообщение»: «Пустой токен доступа oauth2», «статус»: 401 }