1

我需要从我的 Pocket 帐户中检索我保存的阅读列表,而且我似乎需要通过他们的 oAuth 获取访问令牌才能发出请求。

我有访问令牌的消费者密钥,根据 Pocket API 文档,请求将类似于这样。

POST /v3/oauth/request HTTP/1.1
Host: getpocket.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Accept: application/x-www-form-urlencoded

consumer_key=1234-abcd1234abcd1234abcd1234&
redirect_uri=pocketapp1234:authorizationFinished

我的问题是...不是 oAuth 用于 3rd 方应用程序以通过 Google、Facebook 帐户启用身份验证吗?我看不出这个想法与我的网站有什么关系,我的网站只需要从 Pocket 访问我自己的数据即可在我的网站上共享。

我知道我需要以某种方式进行身份验证,以便我可以访问我的数据,但是 oAuth 是我需要通过的过程来获得我需要的东西吗?

4

2 回答 2

3

他们似乎只支持 3 条腿的 OAuth 流。你可以在你的 NodeJS 应用程序中使用Grant ,或者只是从这里获取访问令牌。

授予

  • 将以下示例保存到文件
  • 在此处设置您的密钥:key:'...'
  • 安装所需的依赖项
  • 使用 node.js 运行文件
  • 导航http://localhost:3000/connect/getpocket
  • 按照屏幕上的说明进行操作

最后你会看到你的access_token.

var express = require('express')
  , session = require('express-session')

var options = {
  server: {protocol:'http', host:'localhost:3000'},
  getpocket: {key:'...', callback:'/getpocket_callback'}
}

var Grant = require('grant-express')
  , grant = new Grant(options)

var app = express()
app.use(session({secret:'very secret'}))
app.use(grant)

app.get('/getpocket_callback', function (req, res) {
  console.log(req.query)
  res.end(JSON.stringify(req.query, null, 2))
})

app.listen(3000, function () {
  console.log('Express server listening on port ' + 3000)
})

}

最纯粹的

然后,您可以使用Purest向 Pocket 的 REST API 发出请求。

var getpocket = new Purest({provider: 'getpocket'})
getpocket.query()
  .post('get')
  .auth('[API_KEY]', '[ACCESS_TOKEN]')
  .request(function (err, res, body) {
    // body is the parsed JSON response
  })
于 2015-10-07T07:43:00.590 回答
1

对于任何在 2021 年或之后阅读这篇文章的人,想要制作一个简单的脚本来将文章添加到他们的口袋里,我想出了这个:

1:通过Pocket 的网站获取您的用户密钥。

2:获取访问令牌,使用工具非常简单。如果你想制作一个应用程序或没有它就可以工作的东西,我想上面的(旧)答案可能有效,没有测试它。

3:使用以下代码添加文章:

var request = require('request');

request.post({
        url: 'https://getpocket.com/v3/add',
        form: {
            url: 'https://articleToAdd.com',
            consumer_key: '123456-12abcd1234a1ab12a12abc12',
            access_token: '12345a1a-1ab1-1a12-12a1-1a1234'
        }
    },
    function(err, httpResponse, body) { console.log(httpResponse.body) }
)

希望它可以帮助那些希望做同样事情的人。检索/修改文章是类似的,看这里的细节。

于 2021-03-12T20:12:09.577 回答