2013-07-05 26 views
1

我想进行一个包含2个不同访问令牌的批量请求。我研究并发现,还需要一个回退访问令牌。我已将访问令牌之一作为回退访问令牌。所以,假设我有2个访问令牌T1和T2,并且我已经将T1作为后备访问令牌,那么我无法获取T2的数据,反之亦然。Facebook多路访问令牌批量请求

下面是我使用这样做批量要求

batch_data = [] 
def addToBatchRequest(): 

username = some user name 
access_token = token1 
fql_query='SELECT%20username,name,%20mutual_friend_count%20FROM%20user%20WHERE%20uid%20IN(SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20in%20(SELECT%20uid%20FROM%20user%20WHERE%20username%20=%20"'+username+'"%20))order%20by%20mutual_friend_count%20DESC%20limit%203%20' 
batch_data.append({ 
        'method' : "GET", 
        'relative_url' : "/fql?q="+fql_query+'&access_token='+access_token, 
        'access_token': access_token, 
        }) 
username = some user name 
access_token = token2 
fql_query='SELECT%20username,name,%20mutual_friend_count%20FROM%20user%20WHERE%20uid%20IN(SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20in%20(SELECT%20uid%20FROM%20user%20WHERE%20username%20=%20"'+username+'"%20))order%20by%20mutual_friend_count%20DESC%20limit%203%20' 
batch_data.append({ 
        'method' : "GET", 
        'relative_url' : "/fql?q="+fql_query+'&access_token='+access_token, 
        'access_token': access_token, 
        }) 

def batch_call(access_t): 
#if access_t is token1 then I am not able to get data for token2 and vice-versa 
end_point = 'https://graph.facebook.com' 
data = urllib.urlencode({'access_token': access_t, 'batch': json.dumps(batch_data) }) 
url = urllib2.urlopen(end_point, data) 
response = url.read() 
user_results = json.loads(response) 
for user in user_results : 
    user_body = json.loads(user['body']) 
    print user_body['data'][0]['username'] 
url.close() 

回答