使用OAuth2.0登录用户后,我试图向LinkedIn的API发出授权请求。我一直在收到有关CORS政策的错误消息,并且在发送正确的标头时需要帮助,这样我就不再收到这些错误消息。
我尝试包括几个不同的“ Access-Control-Request”标头,但我一直遇到相同的错误。我很确定这与我发送给API的“ Authorization”标头有关,但是文档中需要此标头才能接收正确的信息。
我用来拨打电话的代码如下所示...
async function getProfileData(accessToken, expiresIn) {
const requestUrl = `https://api.linkedin.com/v2/me`;
const response = await fetch(requestUrl, {
method: 'GET',
headers: {
'Host': 'api.linkedin.com',
'Connection': 'Keep-Alive',
'Authorization': `Bearer ${accessToken}`,
'Origin': REDIRECT_URI,
'Access-Control-Request-Method': 'GET',
'Access-Control-Request-Headers': 'Content-Type, Authorization'
}
});
return response;
}
在这种情况下,accessToken来自上一个网络调用,该网络调用使用了上一步中的授权代码。在此之前的所有工作均正常进行,并且我得到的响应是我认为是有效的访问令牌。
以前,即使我按照文档的说明进行了检索,但仍然收到一条错误消息,指出我的访问令牌无效。我不确定这是否是相同的问题,但是我看不到我拥有无效令牌的原因(令牌没有过期,并且我从不拒绝登录权限)。>
我希望从通话中得到的答复是已登录用户的基本个人资料数据,但我得到了:
OPTIONS https://api.linkedin.com/v2/me 401
getProfileData @ app.js:74
(anonymous) @ app.js:50
Access to fetch at 'https://api.linkedin.com/v2/me' from origin 'https://simple-linkedin-login2.netlify.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.