The remote server returned an error: (401) Unauthorized from LinkedIn

The remote server returned an error: (401) Unauthorized from LinkedIn

我正在使用此代码并遇到错误:

The remote server returned an error: (401) Unauthorized.

根据他们的文档,我确实设置了 headers。

https://developer.linkedin.com/docs/share-on-linkedin#

我错过了什么?任何帮助将不胜感激。谢谢!

JToken accessCode = myAccessToken;
string requestUrl = "https://api.linkedin.com/v1/people/~/shares?oauth2_access_token=" + 
                    accessCode;

WebRequest request = WebRequest.Create(requestUrl);
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("x-li-format", "json");

using (var stream = new StreamWriter(request.GetRequestStream()))
{
    var shareMsg = new
    {
        comment = "comment"
        content = new
        {
            title = "title",
            submitted_url = "url,
            submitted_image_url = "image_url",
            description = string.Empty
        },
        visibility = new { code = "anyone" }
    };

    string json = JsonConvert.SerializeObject(shareMsg);
    stream.Write(json);
    stream.Flush();
    stream.Close();
}

WebResponse webResponse = request.GetResponse();
Stream dataStream = webResponse.GetResponseStream();
var reader = new StreamReader(dataStream);
string response = reader.ReadToEnd();

注销然后再次使用 Linked In 进行身份验证解决了我的问题。

对于遇到类似问题的人,您可能需要检查以下内容:

  • 访问令牌有效
  • 检查正确的权限(w_share 在我的例子中)
  • 检查是否有权利headers
  • 有人报告说如果您等待几分钟它就会开始工作
  • 从您的应用程序中注销 Linked In 并再次进行身份验证(我的解决方案)

其他解决方案: - https://whosebug.com/a/41569491/7312674

希望它能帮助人们节省一些时间。