使用axios获取访问令牌

问题描述 投票:3回答:2

我正在使用Lyft API,并试图找出如何使用具有节点脚本的axios获取访问令牌。

我可以通过填写表格来手动获取访问令牌,如下所示:

Getting token inside of Postman

当我填写表格时,我可以成功地从Lyft获得一个新令牌。

我试图通过执行以下操作将此转换为使用axios的POST请求:

var axios = require('axios');
var data = {
"grant_type": "client_credentials",
"scope": "public",
"client_id": "XXXXXXXXX",
"client_secret": "XXXXXXXX"
};
var url = "https://api.lyft.com/oauth/token";
  return axios.post(url, data)
    .then(function(response){
        console.log(response.data)
    })
    .catch(function (error) {
      console.log(error);
    });

当我运行脚本时,我收到此错误:

{ error_description: 'Unauthorized', error: 'invalid_client' }

我的axios请求中缺少什么?任何帮助,将不胜感激!

javascript node.js oauth-2.0 axios lyft-api
2个回答
6
投票

根据Lyft(https://developer.lyft.com/docs/authentication)的文档,您需要使用HTTP Basic auth。

var axios = require("axios");

axios.request({
  url: "/oauth/token",
  method: "post",
  baseURL: "https://api.lyft.com/",
  auth: {
    username: "vaf7vX0LpsL5",
    password: "pVEosNa5TuK2x7UBG_ZlONonDsgJc3L1"
  },
  data: {
    "grant_type": "client_credentials",
    "scope": "public"    
  }
}).then(function(res) {
  console.log(res);  
});

快乐编码:)

!重要的事情! 我强烈建议你尽快更改你的secret_id和client_secret,因为它们不是公开的东西,如果你将它们用于一个重要的项目或类似的东西。


0
投票

最佳解决方案是source使用以下方式。客户端将具有以下正文参数的POST请求发送到授权服务器

  • grant_type,其值为client_credentials
  • client_id与客户端的ID
  • client_secret与客户的秘密
  • 范围,带有以空格分隔的请求范围权限列表。 axios.post('https://exmaple.com/oauth/token', 'grant_type=client_credentials&scope=all&client_id=1&client_secret=bb' ) .then(function(res) { console.log(res); }) .catch(error => { console.log(error) })

0
投票

我用这段代码解决了我的问题。

var reqData = "grant_type=password&username=test&password=asd";
         Axios({
    method: 'post',
    url: 'http://localhost:60439/token',
        data: (reqData),   

    headers: { 
      "Content-Type": "application/x-www-form-urlencoded",
    }
  }).then((response) =>{
            console.log(response)
        }).catch((error) =>{
            console.log(error);
        })
© www.soinside.com 2019 - 2024. All rights reserved.