了解Podbean-api

时间:2018-12-23 12:46:44

标签: javascript node.js reactjs oauth

我正在尝试创建一个网站,从Podbean API获取我最喜欢的播客。

我以前使用过fetch,但是这些API的设置要容易得多,并且没有身份验证部分。这就是我正在努力的目标。

所以这基本上是我以前使用过的:

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  .then(json => console.log(json))

据我了解,可以通过其他各种线程进行浏览:

  1. 我需要将client_idclient_secret的get请求发送到获取access_token

  2. 使用access_token从那里获得访问权限,因此可以从podcast对象获取日期。

我将很高兴收到任何有关如何处理auth部分的指导,并且很显然让我知道我的某些思维过程是否完全错误。

提前谢谢!

1 个答案:

答案 0 :(得分:2)

好的,所以我知道这个问题已经超过 2 年了,但我仍然会分享我的解决方案,因为我一直在努力理解如何使用这个 API。此解决方案仅适用于您是播客的所有者(或至少可以访问开发者帐户)。

API 的问题是,如果您不想使用 auth2(我仍然不确定它如何与 podbean 完全配合),您必须使用 POST 方法而不是 GET 方法来处理数据并提供参数(正文和标题)并使用 HTTP basic authentication scheme。他们的文档仅在 php 中,但通过一些研究,您会了解他们在做什么,可以找到适用于此解决方案的部分 here

代码如下:

const fetch = require("node-fetch");
const btoa = require('btoa');
const client_id = 'Enter your client id';
const client_secret = 'Enter your client secret';
const uri = 'https://api.podbean.com/v1/oauth/token';

// Base 64 encode client_id and client_secret to use basic authentication scheme
const auth = "Basic " + btoa(client_id + ':' + client_secret);

// Set POST request params
const options = {
    method: 'POST',
    body: 'grant_type=client_credentials',
    headers : {
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": auth
    }
}

// Fetch
fetch(uri, options)
    .then(res => res.json())
    .then(data => console.log(data))

我希望这对将来尝试通过 JavaScript 使用此 API 的任何人有所帮助。