Bash/Curl的口袋oAuth登录的例子



我试图得到一个简单的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_KEYPOCKET_APP_NAME。例如

pip install requests
export POCKET_CONSUMER_KEY=xxx-yyy-zzz
export POCKET_APP_NAME=my-pocket-app
python <filename>.py

HTH

相关内容

  • 没有找到相关文章

最新更新