【问题标题】:POST https://www.linkedin.com/uas/oauth2/accessToken HTTP/1.1 results in Method Not Found on LinkedInPOST https://www.linkedin.com/uas/oauth2/accessToken HTTP/1.1 导致在 LinkedIn 上找不到方法
【发布时间】:2015-04-07 13:16:53
【问题描述】:

我正在使用 LinkedIn Owin Middleare,今天早上开始遇到问题,现在已将其重现为以下错误:

POST https://www.linkedin.com/uas/oauth2/accessToken HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: www.linkedin.com
Cookie: bscookie="v=1&201504071234373bc02b47-9d08-477f-8375-b80b281ef416AQEptFjv8jXPI93YmF-H-3kvnwSLwBF8"; bcookie="v=2&46f6f299-6702-48bf-8634-7ba023bd5099"; lidc="b=LB23:g=218:u=215:i=1428412320:t=1428487523:s=AQEQQq6vlEKPT3LW8c0cPEzRTKp-ToxL"
Content-Length: 267
Expect: 100-continue
Connection: Keep-Alive

grant_type=authorization_code&code=AQQRSgEH8vczSFJKNxtMpunzjYN6YJxoF2hiX_d9RVkqBvMC7TzRpur0p9NJFdQOUNf8RmFyj_cCg3ENTucRw5e-gQfEZ5sPGoujiFRsQ8Tb0pLnaog&redirect_uri=http%3A%2F%2Flocalhost%3A1729%2Fsignin-linkedin&client_id=&client_secret=

导致找不到方法。

HTTP/1.1 405 Method Not Allowed
Date: Tue, 07 Apr 2015 13:13:16 GMT
Content-Type: text/html
Content-Language: en
Content-Length: 5487
X-Li-Fabric: PROD-ELA4
Strict-Transport-Security: max-age=0
Set-Cookie: lidc="b=LB23:g=218:u=215:i=1428412396:t=1428487523:s=AQExeP2uX-7KXQv79NIZmW0LB09uE4eJ"; Expires=Wed, 08 Apr 2015 10:05:23 GMT; domain=.linkedin.com; Path=/
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store
Connection: keep-alive
X-Li-Pop: PROD-IDB2
X-LI-UUID: 0FM/jIG90hPAzyhAqCsAAA==

寻找任何人来确认linkedin 上的更改导致此错误并且它不是特定于应用程序的。

请注意,我删除了上面的 clientid/secrets。

【问题讨论】:

  • 我也想回答这个问题!
  • 我遇到了同样的错误,但没有使用 Owin。只需向linkedin.com/uas/oauth2/accessToken 构建一个WebRequest。如果我在 Crome 扩展“高级休息客户端”中运行请求,它工作正常。但是通过 c# 结束它会失败,出现 405。

标签: linkedin


【解决方案1】:

我早上大部分时间都在休息,试图让它发挥作用。令人沮丧的是,它使用Advanced Rest Client chrome 工具运行良好。这个和 fiddler 的组合显示标题中的唯一区别是标题中的 Expect: 100-continue 标志。我能够将其设置为 false 的唯一方法是在 web.config 部分中

<system.net>
    <settings>
        <servicePointManager expect100Continue="false" />
    </settings>
</system.net>

希望这会有所帮助。

【讨论】:

【解决方案2】:

我今天早上也遇到了这个问题(我正在使用 DotNetOpenAuth)。看起来这与使用以下请求标头有关:Expect: 100-continue

删除此请求标头后,HTTP/1.1 405 Method Not Allowed 响应不再出现。显然,如果您无法访问源代码,这将无济于事!

我假设这是因为我今天早上才开始遇到问题,因此 LinkedIn 发生了变化。我猜他们需要研究解决这个问题。

【讨论】:

  • 我试图在提琴手中删除此标头并得到 404。您是否确认删除此标头可以解决问题?
  • 在我看来,标头已在 Owin 中间件中设置,因此无法修复。希望linkedin也在考虑调查这个问题。
  • 是的,删除标题可以解决问题。我刚刚在提琴手中尝试过,第一次使用指定的标头返回 405 响应。然后我在没有标头的情况下运行完全相同的请求并且请求成功(返回访问令牌)
  • 删除标题时得到 400。
  • 有人有工作请求的 curl 示例吗?我什至没有 Expect: 100-continue in my current call。
【解决方案3】:

我今天开始遇到这个问题。在对 Expect: 100-continue 进行一些研究后,我发现将 System.Net.ServicePointManager.Expect100Continue = false;

在 Global.asax 内的 Application_Start() 函数中,从请求中取出 100-continue,我的 LinkedIn 登录现在又可以正常工作了。

不是一个永久修复,因为我现在想知道为什么它首先坏了。

【讨论】:

    【解决方案4】:

    我也有同样的问题,也使用 DotNetOpenAuth。

    我如何解决:

    1. 我从请求头中删除"Expect: 100-continue"
    2. 在我的情况下,redirect_uri 被编码,我删除了 redirect_uri 的编码(请求https://www.linkedin.com/uas/oauth2/accessToken

    【讨论】:

      【解决方案5】:

      对于那些使用 Owin 中间件和 Owin.Security.Providers 的人

      已创建带有修复程序的预发布 nuget。 https://www.nuget.org/packages/Owin.Security.Providers/1.17.0-pre

      这暂时有效。但是,在我们知道linkedin 发生了什么变化或附带关于他们改变了什么的声明之前,人们可以将其用作修补程序。

      可以在以下位置找到有关此修复的更多背景信息: https://github.com/RockstarLabs/OwinOAuthProviders/issues/87#issuecomment-90838017

      但根本原因是 LinkedIn 更改了 accessToken 端点上的某些内容,导致大多数使用linkedin SSO 的库必须应用修补程序,但我们还没有收到linkedin 的任何消息。

      【讨论】:

        【解决方案6】:

        找到了 curl 的解决方案,很简单:

        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:') );
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-12
          • 1970-01-01
          • 1970-01-01
          • 2019-01-15
          • 1970-01-01
          • 1970-01-01
          • 2021-08-16
          • 1970-01-01
          相关资源
          最近更新 更多