0

是否无法使用多个访问令牌使用 'method/fql.query?query=...' 批量查询图形?

过去,我从来没有遇到过使用多个访问令牌批量查询非 fql 端点的问题,但是通过批量查询 FQL 调用,只有第一个调用返回数据,其余的返回一个空的主体。

我能做出的唯一猜测是它与 access_token 相关,但如果是这样,我对如何补救感到不知所措..

例子:

import json
from pyfaceb import *

user1_tk = '...' #valid token (tested)
user1_qry = '...' #valid query (tested unbatched)
user1_rqst = {'method': 'POST', 'relative_url': 'method/fql.query?query=' + user1_qry, 'access_token': user1_tk}

user2_tk = '...' #valid token (tested)
user2_qry = '...' #valid query (tested unbatched)
user2_rqst = {'method': 'POST', 'relative_url': 'method/fql.query?query=' + user2_qry, 'access_token': user2_tk}

batches = [user1_rqst, user2_rqst]

fbg = FBGraph(user1_tk) # use user1_tk as fallback access token (cuz you have to specify one)
data = fbg.get_batch(batches)

print data[0]['body'] #comes back with data, but
print data[1]['body'] #comes back as an empty array.

data[0]['code'] 和 data[1]['code'] 都是 HTTP 200 响应。

如果我将回退访问令牌更改为 user2_tk,则 data[0]['body'] 会以空数组的形式返回(反之亦然)。即使我为每个请求指定了 access_tokens(根据:https ://developers.facebook.com/docs/reference/api/batch/#differentaccesstokens )

4

1 回答 1

0

弄清楚了。acccess_token 需要在请求正文中,因为它是一个 POST:

...
user1_rqst = {
    'method': 'POST',
    'relative_url': 'method/fql.query?query=' + user1_qry,
    'body': 'access_token=' + user1_tk
}

...

user2_rqst = {
    'method': 'POST',
    'relative_url': 'method/fql.query?query=' + user2_qry,
    'body': 'access_token=' + user2_tk
}
于 2012-04-26T00:16:10.287 回答