繁体   English   中英

无法使用 axios 获取linkedin 的访问令牌

[英]Unable to get access token for linkedin using axios

我正在尝试按照Linkedin Oauth中描述的步骤获取访问令牌。 我正在尝试在获取访问令牌的过程中执行步骤 2。 我将 Axios 用于 POST 请求。 这是我正在使用的代码(出于安全原因,客户端密码和 id 不是真实的):

    const axios = require('axios');
    const qs = require('qs');
    axios({
        method: 'post',
        url: 'https://www.linkedin.com/oauth/v2/accessToken',   
        data: qs.stringify({
            grant_type: 'authorization_code',
            code: 'AQSow7V6s2F2koWzIsnVKcQGt_cHtsM1F3FHZOrEV0UY1KIFkWiFJpi8dt1NtjuZMOO6-NStoCjTf58awk6GBcH2XQRctt7IBtel4Oeop5yVIBqiedk8qxlIlbkMxlfGg1gCVoupXL6xUc3-jegKYDPSe0rl4mygdpIzGdej2_hhJ827vJcojtvaMXCCGw',
            redirect_uri: 'https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Ftttrrr878',
            client_id: '99blt2z20qlm3d',
            client_secret: 'fGGgdqqcx5t3cRfw'       
        }),
        headers: {
            content-type: 'application/x-www-form-urlencoded;charset=utf-8'
        }
        }).then(result => { 
            console.log(result.data);
        }).catch(error => { 
            console.log(error);
        });

即使在确保code未过期(在 30 分钟过期时间之前)之后运行代码,我也会收到以下错误:

data: {
      error: 'invalid_redirect_uri',
      error_description: 'Unable to retrieve access token: appid/redirect uri/code verifier does not match authorization code. Or authorization code expired. Or external member binding exists'
    }

但是,当我在命令行中使用 curl 执行相同操作时,如下所示,我可以获得访问代码:

curl -ik -X POST https://www.linkedin.com/oauth/v2/accessToken \
-d grant_type=authorization_code \
-d code=AQSow7V6s2F2koWzIsnVKcQGt_cHtsM1F3FHZOrEV0UY1KIFkWiFJpi8dt1NtjuZMOO6-NStoCjTf58awk6GBcH2XQRctt7IBtel4Oeop5yVIBqiedk8qxlIlbkMxlfGg1gCVoupXL6xUc3-jegKYDPSe0rl4mygdpIzGdej2_hhJ827vJcojtvaMXCCGw \
-d redirect_uri=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Ftttrrr878 \
-d client_id=99blt2z20qlm3d \
-d client_secret=fGGgdqqcx5t3cRfw

知道为什么会这样吗? 它与这个问题有某种关系吗?

您的代码看起来正确。 问题是因为您是 url 编码redirect_uri参数,删除它,它应该工作。

您只需要在从浏览器对访问代码进行初始请求时,对 redirect_uri 参数进行编码即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM