【问题标题】:Unable to get access token for linkedin using axios无法使用 axios 获取linkedin 的访问令牌
【发布时间】:2020-11-06 01:37:35
【问题描述】:

我正在尝试按照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

知道为什么会这样吗?是否与此有关 issue?

【问题讨论】:

    标签: javascript node.js post axios linkedin-api


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 2018-09-26
      • 1970-01-01
      相关资源
      最近更新 更多