我试图得到一个简单的bash脚本与口袋api工作。我所要做的就是用pocket验证并下载我的文章列表(实际上,只有计数)
我对这个过程的工作方式有点困惑。
- 我已经用口袋api注册了我的应用程序,并有一个消费者密钥
- 被标记为"开发"-我不确定这是否重要。
让我感到困惑的是,似乎oAuth流与它的重定向uri一起工作的方式是它只真正与gui(即浏览器)一起工作-有可能用bash脚本做到这一点吗?
下面是我写的。它一直工作到我有TOKEN,但那时我不确定下一步该做什么。
#!/bin/bash
REDIR="redirect_uri=pocketapp1234:authorizationFinished"
KEY=21004-xxxxxxabcabcabc # you can assume this is the consumer key pocket issues for my app.
CODE=`curl -X POST --data "consumer_key=$KEY&$REDIR" https://getpocket.com/v3/oauth/request`
echo "OK - code is $CODE"
TOKEN=$(echo $CODE | awk -F"=" '{print $2}')
echo "OK - token is $TOKEN"
AUTH="consumer_key=$KEY&$CODE"
# This line seems not to work
curl -v "https://getpocket.com/auth/authorize?request_token=$TOKEN&$REDIR"
是的,浏览器部分是必需的。在授权阶段,有一个来自getpocket.com的页面提示用户登录并授权bash脚本访问用户的Pocket帐户。
可以参考Pocket API Docs的第3步。
这是我正在使用的Python v3.8脚本,似乎可以工作。
#!/usr/bin/env python
from os import environ as env
import requests
import webbrowser
def authorize_pocket_app():
data = {
"consumer_key": env['POCKET_CONSUMER_KEY'],
"redirect_uri": env['POCKET_APP_NAME'],
}
resp = requests.post(url="https://getpocket.com/v3/oauth/request", data=data)
code = resp.text.split("=")[1]
webbrowser.open(f"https://getpocket.com/auth/authorize?request_token={code}"
"&redirect_uri=https://duckduckgo.com")
input("Authorize %s app in the browser, then click enter" % env['POCKET_APP_NAME'])
get_token(code)
def get_token(code):
resp = requests.post(
url="https://getpocket.com/v3/oauth/authorize",
data={
"consumer_key": env["POCKET_CONSUMER_KEY"],
"code": code,
})
token = resp.text.split("&")[0].split("=")[1]
print("Secret token:", token)
if __name__ == "__main__":
authorize_pocket_app()
要按原样使用它,您需要安装requests
外部库并在shell环境中导出POCKET_CONSUMER_KEY
和POCKET_APP_NAME
。例如
pip install requests
export POCKET_CONSUMER_KEY=xxx-yyy-zzz
export POCKET_APP_NAME=my-pocket-app
python <filename>.py
HTH