如何在将链接发布到我自己的袖珍账户时从Python脚本授权口袋API调用?

时间:2016-02-16 16:54:34

标签: python pocket

我正在编写一个python脚本来添加指向我自己的Pocket帐户的链接。我正在遵循这些步骤。

  1. 获取消费者密钥:我有从Pocket开发人员应用
  2. 生成的消费者密钥
  3. 生成请求令牌:我已生成一个带有以下代码的请求令牌

    pocket_get_request_token_url = "https://getpocket.com/v3/oauth/request"
    headers = {"Content-Type": "application/json; charset=UTF-8",
              "X-Accept": "application/json"}
    
    params = {"consumer_key": consumer_key,
              "redirect_uri": "pocketapp1234:authorizationFinished"}
    
    pocketOAuth = requests.post(pocket_get_request_token_url,
                                json=params, headers=headers)
    
    request_token = json.loads(pocketOAuth.text)["code"]
    
  4. 授权请求令牌:第3步是使用以下代码授权令牌。我不知道如何为python脚本运行这个块。

    pocket_auth_request_token_url = "https://getpocket.com/auth/authorize"
    params = {"request_token": request_token,
          "redirect_uri": "pocketapp1234:authorizationFinished"}
    authResp = requests.post(pocket_auth_request_token_url, json=params)
    
  5. 生成访问令牌:步骤4然后生成访问令牌。如果我继续使用以下代码生成访问令牌,

    pocket_get_access_token_url = "https://getpocket.com/v3/oauth/authorize"
    headers = {"Content-Type": "application/json; charset=UTF-8",
           "X-Accept": "application/json"}
    
    params = {"consumer_key": consumer_key,
          "code": request_token}
    
    accessResp = requests.post(pocket_get_access_token_url,
                           json=params, headers=headers)
    
    access_token = json.loads(accessResp.text)["access_token"]
    
  6. 当我运行上面的代码块时,我收到以下错误。

      

    x-error-code:158 x-error:用户拒绝代码

    所以我的问题是,如果我尝试使用python脚本向我的口袋帐户添加链接,我显然没有运行Web应用程序,所以如何授权生成的请求令牌以便我可以继续生成访问令牌

2 个答案:

答案 0 :(得分:3)

要添加到Yue的答案中,如果从脚本运行此重定向URI,则无关紧要。我也遇到了这个问题,并使用input来使脚本具有交互性:https://gist.github.com/alexpyoung/7e241a8f3f805630f0f66a1cf0763675#file-pocket_import-L71

答案 1 :(得分:1)

我试图授权Pocket Developer API并按照您的步骤操作。但是,我根据Getting Started With the Pocket Developer API在步骤3中尝试了不同的方法。

您应该使用请求令牌和重定向URI修改以下网址,然后在浏览器中将其打开:https://getpocket.com/auth/authorize?request_token=YOUR_REQUEST_TOKEN&redirect_uri=YOUR_REDIRECT_URI