web-dev-qa-db-ja.com

axiosでアクセストークンを取得する

Lyft API を使用していて、ノードスクリプトを使用してaxiosでアクセストークンを取得する方法を理解しようとしています。

次のようなフォームに入力して、Postmanを使用して手動でアクセストークンを取得できます。

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リクエストに何が欠けていますか?どんな助けでもいただければ幸いです!

5
Mike

Lyftのドキュメント( https://developer.lyft.com/docs/authentication )によると、HTTP基本認証を使用する必要があります。

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は、重要なプロジェクトなどで使用する場合は公開されないため、できるだけ早く変更することを強くお勧めします。

7
IzumiSy

このコードで問題を解決しました。

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);
        })
2
DKR

最善の解決策は source 次の方法を使用することでした。クライアントは、以下の本文パラメーターを使用してPOST要求を承認サーバーに送信します

  • 値client_credentialsを持つgrant_type
  • 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
const axios = require("axios");
const qs = require("qs");

const url = "URL";

const data = {
  grant_type: "client_credentials",
};

const auth = {
  username: "Client ID",
  password: "Client Secret",
};

const options = {
  method: "post",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
  },
  data: qs.stringify(data),
  auth: auth,
  url,
};

  axios(options)
 .then((response) => {
      console.log(response.data.access_token);
  })
 .catch((err) => {
      console.log(err);
  });
0
ASHISH RANJAN