作为LinkedIn Campaign Manager的用户,我可以在用户界面中更新以下内容:
在共享中:
根据您的文档you can only edit the text of the ad。使用您的沙盒帐户并尝试上面链接中的示例请求,我得到一个非常奇怪的错误:
"com.linkedin.restli.client.RestLiResponseException: Response status 400, serviceErrorMessage: com.linkedin.publishing.util.common.ResponseException: Editing of properties other than and WLed parameters is not allowed."
关于我找不到任何信息。 它允许我发布共享,但不能编辑它们。
另一个问题是,LinkedIn API不会返回草稿广告。也可以下载/更新草稿吗?
该服务正在ASP.NET MVC5上运行。
代码:
public class EditASingleShareService : IEditASingleShareService
{
public async Task<string> EditASingleSharesTextAsync(ShareEditUserView share, long share_id)
{
ShareEditRequest shareEditRequestModel = InitializeTheShareRequestObject(share);
using (var httpClient = new HttpClient())
{
StaticMethods.AuthorizeToken(httpClient);
var reqUrl = $"{ConfigurationManager.AppSettings["ShareEndPoint"]}/urn:li:share:{share_id}";
ByteArrayContent byteContent = StaticMethods.CreateByteArrayContent(shareEditRequestModel);
var response = await httpClient.PostAsync(reqUrl, byteContent);
response.EnsureSuccessStatusCode();
return $"The correct status code is 204. Actual response: {response.ToString()}";
}
}
private static ShareEditRequest InitializeTheShareRequestObject(ShareEditUserView share)
{
var shareEditRequestModel = new ShareEditRequest()
{
patch = new Patch()
{
set = new Set()
{
text = new Text()
{
annotations = new List<object>()
}
}
}
};
shareEditRequestModel.patch.set.text.text = share.Text;
return shareEditRequestModel;
}
}
public static void AuthorizeToken(HttpClient httpClient)
{
string accessTkn = ConfigurationManager.AppSettings["AuthToken"];
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessTkn);
}
public static ByteArrayContent CreateByteArrayContent(object anyTypeofAdObject)
{
var myContent = JsonConvert.SerializeObject(anyTypeofAdObject);
var buffer = Encoding.UTF8.GetBytes(myContent);
var byteContent = new ByteArrayContent(buffer);
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return byteContent;
}
型号:
public class ShareEditRequest
{
public Patch patch { get; set; }
}
public class Text
{
public List<object> annotations { get; set; }
public string text { get; set; }
}
public class Set
{
public Text text { get; set; }
}
public class Patch
{
[JsonProperty("$set")]
public Set set { get; set; }
}
}
public class ShareEditUserView
{
public string Text { get; set; }
}
控制器:
/// <summary>
/// Edit a single shares text (only editable field).
/// </summary>
/// <param name="share">Share user view.</param>
/// <param name="share_id">ID of the share</param>
/// <returns>Response code</returns>
[HttpPost]
public async Task<string> EditASingleShareAsync(ShareEditUserView share, long share_id)
{
return await editShare.EditASingleSharesTextAsync(share, share_id);
}
Web配置:
<appSettings>
<add key="CampaignEndPoint" value="https://api.linkedin.com/v2/adCampaignsV2" />
<add key="CreativeEndPoint" value="https://api.linkedin.com/v2/adCreativesV2" />
<add key="ShareEndPoint" value="https://api.linkedin.com/v2/shares" />
</appSettings>