编辑通过LinkedIn API共享内容

编辑通过LinkedIn API共享内容,linkedin,linkedin-api,Linkedin,Linkedin Api,作为LinkedIn Campaign Manager的用户,我能够在UI中更新以下内容: 广告名称 介绍性案文 目标URL 在该份额内: 广告形象 标题, 描述 根据你的文件。使用您的沙盒帐户并尝试上面链接的示例请求,我得到了一个非常奇怪的错误: “com.linkedin.restli.client.RestLiResponseException:响应状态400,serviceErrorMessage:com.linkedin.publishing.util.common.Respo

作为LinkedIn Campaign Manager的用户,我能够在UI中更新以下内容:

  • 广告名称
  • 介绍性案文
  • 目标URL
在该份额内:

  • 广告形象
  • 标题,
  • 描述
根据你的文件。使用您的沙盒帐户并尝试上面链接的示例请求,我得到了一个非常奇怪的错误:

“com.linkedin.restli.client.RestLiResponseException:响应状态400,serviceErrorMessage:com.linkedin.publishing.util.common.ResponseException:不允许编辑和WLed参数以外的属性。”

我找不到任何信息。 它允许我发布共享,但不能编辑它们

另一个问题是LinkedIn API不返回草稿创意。有没有办法下载/更新草稿

该服务正在ASP.NET MVC5上运行

代码:

public类EditASingleShareService:IEditASingleShareService
{
公共异步任务EditASingleSharesTextAsync(ShareEditUserView共享,长共享\u id)
{
ShareEditRequest shareEditRequestModel=初始化ShareRequestObject(共享);
使用(var httpClient=new httpClient())
{
StaticMethods.AuthorizeToken(httpClient);
var reqUrl=$“{ConfigurationManager.AppSettings[“ShareEndPoint”]}/urn:li:share:{share_id}”;
ByteArrayContent byteContent=StaticMethods.CreateByteArrayContent(shareEditRequestModel);
var response=wait httpClient.PostAsync(请求URL,字节内容);
response.EnsureSuccessStatusCode();
return$“正确的状态代码是204。实际响应:{response.ToString()}”;
}
}
私有静态ShareEditRequest初始化ShareRequestObject(ShareEditUserView共享)
{
var shareEditRequestModel=新的ShareEditRequest()
{
补丁=新补丁()
{
集合=新集合()
{
text=新文本()
{
注释=新列表()
}
}
}
};
shareEditRequestModel.patch.set.text.text=share.text;
返回shareEditRequestModel;
}
}
公共静态无效授权令牌(HttpClient HttpClient)
{
字符串accessTkn=ConfigurationManager.AppSettings[“AuthToken”];
httpClient.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“承载人”,accessTkn);
}
公共静态ByteArrayContent CreateByteArrayContent(对象AnyTypeOfObject)
{
var myContent=JsonConvert.SerializeObject(anytypeofaabject);
var buffer=Encoding.UTF8.GetBytes(myContent);
var byteContent=新的ByteArrayContent(缓冲区);
byteContent.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
返回字节内容;
}
型号:

    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; }
}
公共类ShareEditRequest
{
公共修补程序修补程序{get;set;}
}
公共类文本
{
公共列表注释{get;set;}
公共字符串文本{get;set;}
}
公共类集
{
公共文本文本{get;set;}
}
公共类补丁
{
[JsonProperty(“$set”)]
公共集集{get;Set;}
}
}
公共类ShareEditUserView
{
公共字符串文本{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);
    }
//
///编辑单个共享文本(仅可编辑字段)。
/// 
///共享用户视图。
///股票的ID
///响应代码
[HttpPost]
公共异步任务EditASingleShareAsync(ShareEditUserView共享,长共享\u id)
{
返回wait wait editShare.EditASingleSharesTextAsync(共享,共享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>


你有没有找到解决问题的方法?嘿@sorenhk,恐怕我没有。LinkedIn的支持在这方面也没有太大帮助。我认为这是值得与他们联系的,因为如果他们对这个问题有更多的疑问,或者至少在这个问题上更新他们的文档,他们可能会尽早确定优先顺序。。。