Lyft API を使用していて、ノードスクリプトを使用してaxiosでアクセストークンを取得する方法を理解しようとしています。
次のようなフォームに入力して、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リクエストに何が欠けていますか?どんな助けでもいただければ幸いです!
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は、重要なプロジェクトなどで使用する場合は公開されないため、できるだけ早く変更することを強くお勧めします。
このコードで問題を解決しました。
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);
})
最善の解決策は source 次の方法を使用することでした。クライアントは、以下の本文パラメーターを使用してPOST要求を承認サーバーに送信します
要求されたスコープ権限のスペース区切りリストを持つスコープ。
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)
})
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);
});