从 Pocket API 中检索数据 (oAuth)
Retrieving data from Pocket API (oAuth)
我需要从我的 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 不是可以通过 Google、Facebook 帐户启用身份验证吗?我不明白这个想法与我的网站有什么关系,我的网站只需要从 Pocket 访问我自己的数据就可以在我的网站上分享。
我知道我需要以某种方式进行身份验证,以便我可以访问我的数据,但是 oAuth 是我需要经过的过程才能获得我需要的信息吗?
他们似乎只支持 3 条腿的 OAuth 流程。您可以使用 Grant in your NodeJS app, or just get access token from here.
授予
- 将以下示例保存到文件
- 在此处设置密钥:
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
})
对于在 2021 年或之后阅读本文的任何人,想要制作一个简单的脚本来将文章添加到他们的口袋中,我想到了这个:
1:通过pocket's site获取您的用户密钥。
2:获取访问令牌,使用this工具非常简单。如果你想制作一个没有它也能工作的应用程序或其他东西,我想上面的(旧的)答案可能有效,没有测试它。
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) }
)
希望它能帮助那些想做同样事情的人。 Retrieving/modifying篇类似,具体看here
我需要从我的 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 不是可以通过 Google、Facebook 帐户启用身份验证吗?我不明白这个想法与我的网站有什么关系,我的网站只需要从 Pocket 访问我自己的数据就可以在我的网站上分享。
我知道我需要以某种方式进行身份验证,以便我可以访问我的数据,但是 oAuth 是我需要经过的过程才能获得我需要的信息吗?
他们似乎只支持 3 条腿的 OAuth 流程。您可以使用 Grant in your NodeJS app, or just get access token from here.
授予
- 将以下示例保存到文件
- 在此处设置密钥:
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
})
对于在 2021 年或之后阅读本文的任何人,想要制作一个简单的脚本来将文章添加到他们的口袋中,我想到了这个:
1:通过pocket's site获取您的用户密钥。
2:获取访问令牌,使用this工具非常简单。如果你想制作一个没有它也能工作的应用程序或其他东西,我想上面的(旧的)答案可能有效,没有测试它。
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) }
)
希望它能帮助那些想做同样事情的人。 Retrieving/modifying篇类似,具体看here