为什么我在查询 LinkedIn 个人资料 API 时收到 500 条错误?
Why am I getting 500 errors when making a query to the LinkedIn Profile API?
我正在尝试调试 12 月 9 日出现的问题。我们将 LinkedIn 个人资料 API 用于我们平台上的 login/register 用户,并且还可以选择允许他们将数据从他们的 LinkedIn 个人资料同步到他们在我们平台上的个人资料。然而,从 9 日开始,登录和注册都被破坏了。在错误开始出现之前,我们没有更改与此相关的代码。
现在,当我们试图让某人登录到我们的平台时,我们没有收到基本的用户个人资料数据,而是从 LinkedIn API 收到错误。这些来自 Node.js 服务器,该服务器使用现已弃用的 request
包,但已移至 axios
并且仍在产生错误,尽管更详细,这很有帮助。从axios
收到的错误如下:
{
"message": "write EPROTO 140075354449792:error:140920E3:SSL routines:ssl3_get_server_hello:parse tlsext:../deps/openssl/openssl/ssl/s3_clnt.c:1157:\n",
"name": "Error",
"stack": "Error: write EPROTO 140075354449792:error:140920E3:SSL routines:ssl3_get_server_hello:parse tlsext:../deps/openssl/openssl/ssl/s3_clnt.c:1157:\n\n at WriteWrap.afterWrite [as oncomplete] (net.js:868:14)",
"config": {
"transitional": {
"silentJSONParsing": true,
"forcedJSONParsing": true,
"clarifyTimeoutError": false
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1,
"maxBodyLength": -1,
"headers": {
"Accept": "application/json, text/plain, */*",
"User-Agent": "axios/0.24.0"
},
"method": "get",
"url": "https://api.linkedin.com/v2/me?oauth2_access_token=access-token-goes-here&projection=(id,firstName,lastName,maidenName,headline,summary,educations,skills,industryName,positions,vanityName,profilePicture(displayImage~:playableStreams))"
},
"code": "EPROTO",
"status": null
}
我多次读到这是一个 SSL 错误,它可能与将 HTTPS 用于不安全的端点有关(绝对不是这种情况)或者所使用的 TLS 版本可能不匹配,这我也不认为是问题。
但是,我还决定使用 URL 并使用 REST 客户端手动查询它,但得到了这个错误:
{
"serviceErrorCode": 0,
"message": "java.lang.StringIndexOutOfBoundsException: String index out of range: 147",
"status": 500
}
这表明 LinkedIn API 某处存在错误。我还验证了从 Qualys SSL Labs and Digicert 查询 api.linkedin.com
时也会发生类似的错误也无法连接到该域。
我这里有什么问题吗? LinkedIn API 目前有问题吗?这是对 log4j 缓解措施的回应吗?
好吧,到处找,问题出在nodejs版本上。
我尝试了很多东西,更改请求库、升级 nginx 和使用 TLS 1.3 版本...等等
但解决方案是使用节点 10+,我使用的是节点 9.8(我已经测试过 8.11、10.24 和 14.18)
简历:
- 8.11 -> ssl 错误
- 9.8 -> ssl 错误
- 10.24 -> 好
- 14.18 -> 好
这很烦人,因为更改节点版本可能意味着破坏性更改...
我正在尝试调试 12 月 9 日出现的问题。我们将 LinkedIn 个人资料 API 用于我们平台上的 login/register 用户,并且还可以选择允许他们将数据从他们的 LinkedIn 个人资料同步到他们在我们平台上的个人资料。然而,从 9 日开始,登录和注册都被破坏了。在错误开始出现之前,我们没有更改与此相关的代码。
现在,当我们试图让某人登录到我们的平台时,我们没有收到基本的用户个人资料数据,而是从 LinkedIn API 收到错误。这些来自 Node.js 服务器,该服务器使用现已弃用的 request
包,但已移至 axios
并且仍在产生错误,尽管更详细,这很有帮助。从axios
收到的错误如下:
{
"message": "write EPROTO 140075354449792:error:140920E3:SSL routines:ssl3_get_server_hello:parse tlsext:../deps/openssl/openssl/ssl/s3_clnt.c:1157:\n",
"name": "Error",
"stack": "Error: write EPROTO 140075354449792:error:140920E3:SSL routines:ssl3_get_server_hello:parse tlsext:../deps/openssl/openssl/ssl/s3_clnt.c:1157:\n\n at WriteWrap.afterWrite [as oncomplete] (net.js:868:14)",
"config": {
"transitional": {
"silentJSONParsing": true,
"forcedJSONParsing": true,
"clarifyTimeoutError": false
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1,
"maxBodyLength": -1,
"headers": {
"Accept": "application/json, text/plain, */*",
"User-Agent": "axios/0.24.0"
},
"method": "get",
"url": "https://api.linkedin.com/v2/me?oauth2_access_token=access-token-goes-here&projection=(id,firstName,lastName,maidenName,headline,summary,educations,skills,industryName,positions,vanityName,profilePicture(displayImage~:playableStreams))"
},
"code": "EPROTO",
"status": null
}
我多次读到这是一个 SSL 错误,它可能与将 HTTPS 用于不安全的端点有关(绝对不是这种情况)或者所使用的 TLS 版本可能不匹配,这我也不认为是问题。
但是,我还决定使用 URL 并使用 REST 客户端手动查询它,但得到了这个错误:
{
"serviceErrorCode": 0,
"message": "java.lang.StringIndexOutOfBoundsException: String index out of range: 147",
"status": 500
}
这表明 LinkedIn API 某处存在错误。我还验证了从 Qualys SSL Labs and Digicert 查询 api.linkedin.com
时也会发生类似的错误也无法连接到该域。
我这里有什么问题吗? LinkedIn API 目前有问题吗?这是对 log4j 缓解措施的回应吗?
好吧,到处找,问题出在nodejs版本上。
我尝试了很多东西,更改请求库、升级 nginx 和使用 TLS 1.3 版本...等等
但解决方案是使用节点 10+,我使用的是节点 9.8(我已经测试过 8.11、10.24 和 14.18)
简历:
- 8.11 -> ssl 错误
- 9.8 -> ssl 错误
- 10.24 -> 好
- 14.18 -> 好
这很烦人,因为更改节点版本可能意味着破坏性更改...