Итак, я следую Документации Linkedin за реализацию Create Share Share на Linkedin.
В документации перечислены три шага:
- Зарегистрируйте свое изображение для загрузки.
- Загрузите изображение в LinkedIn.
- Создайте общий доступ к изображению.
Пока я могу сделать первый шаг, чтобы получить uploadUrl , я получаю сообщение об ошибке 400 с пустым сообщением об ошибке при выполнении шага 2.
В документации указан второй шаг:
curl -i --upload-file /Users/peter/Desktop/superneatimage.png --header "Authorization: Bearer redacted" 'https://api.linkedin.com/mediaUpload/C5522AQGTYER3k3ByHQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQJbrN86Zm265gAAAWemyz2pxPSgONtBiZdchrgG872QltnfYjnMdb2j3A&app=1953784&sync=0&v=beta&ut=2H-IhpbfXrRow1'
Вот мой шаг 2 в коде C #:
private bool UploadImageBinaryFile(RequestUploadUrlResponse uploadDetails)
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", #access_token#);
client.DefaultRequestHeaders.Add("X-Restli-Protocol-Version", "2.0.0");
MultipartFormDataContent form = new MultipartFormDataContent();
string fileAddress = image_path + "image.png";
byte[] fileBytes = File.ReadAllBytes(fileAddress);
string name = "upload-file";
form.Add(new ByteArrayContent(fileBytes), name);
HttpResponseMessage response = client.PutAsync
(
uploadDetails.value.uploadMechanism.mediaUploadHttpRequest.uploadUrl,
form
).Result;
if (response.IsSuccessStatusCode)//<--getting 400 error Bad Request here
{
string responseBody = response.Content.ReadAsStringAsync().Result;
return true;
}
else
{
ErrorResponseHandler(response.Content.ReadAsStringAsync().Result);
return false;
}
}
}
Я гарантировал, что смог успешно загрузить uploadUrl с первого шага.И когда я использовал URL https://api.linkedin.com/v2/assets/#id# для проверки статуса, я смог увидеть статус как WAITING_UPLOAD .
Где я иду не так?