Pocket API 访问令牌请求

5 投票
1 回答
2664 浏览
提问于 2025-04-17 17:44

我正在尝试从Pocket的API获取一个访问令牌。

我已经成功获取了请求令牌,但当我尝试用它来获取访问令牌时,却出现了400错误,意思是请求有问题。

这是我的代码:

def getAccessToken(request_code):
    headers = {'Content-Type' : 'application/json; charset=UTF-8','X-Accept': 'application/json'}
    request_data = json.dumps({"consumer_key":["12092-2970cc0e27ce9a25cb39f1dd"],"code":["af0f6c9b-815b-cd1d-9864-b6d375"]})
    url = "https://getpocket.com/v3/oauth/authorize"

    response_data = makeRequest(headers,request_data,url)
    access_code, username = response_data['access_token'],response_data['username']

    return access_code,username

def makeRequest(request_headers,request_data,request_url):
    request = urllib2.Request(request_url,request_data,request_headers)
    response = urllib2.urlopen(request)
    data = json.load(response)

    return data

我就是搞不明白问题出在哪里。我很确定请求令牌是有效的(有没有什么方法可以确认?),我按照流程重定向到Pocket的授权页面,点击授权后又被重定向回了指定的地址。在得到这个地址后,我就调用getAccessToken()。

如果我需要提供额外的信息,请告诉我。谢谢大家的帮助。

更新:

我进一步调查这个问题,发现Pocket有一份HTTP错误描述的列表。我遇到的错误是138 - 缺少消费者密钥。

这让我更加困惑,因为我用的正是同一个消费者密钥来获取请求令牌的。

响应头信息:

Cache-Control: private
Content-Type: text/html; charset=UTF-8
Date: Sun, 03 Mar 2013 03:54:01 GMT
P3P: policyref="/w3c/p3p.xml", CP="ALL CURa ADMa DEVa OUR IND UNI COM NAV INT STA PRE"
Server: Apache/2.2.23 (Amazon)
Status: 400 Bad Request
X-Error: Missing consumer key.
X-Error-Code: 138

1 个回答

4

[]{"consumer_key":["12092-2970cc0e27ce9a25cb39f1dd"], 中去掉。你现在传的是一个列表,但可能应该传的是一个字符串。这样做应该就能解决问题。

撰写回答