使用Facebook Graph API时,urllib2出现HTTP 403错误,但urllib没有

2 投票
1 回答
2295 浏览
提问于 2025-04-17 02:43

我有一段代码,用的是urllib2,结果出现了HTTP错误403:禁止访问。但是如果我换成urllib来获取网址,就没有错误,反而能顺利得到我的朋友列表。使用的访问令牌在两种情况下都是一样的。

url = 'https://graph.facebook.com/me/friends/'
params = {'access_token': 'a valid access-token...', 'fields': 'id,name,birthday'}
req = urllib2.Request(url, data=urllib.urlencode(params))
try:
  con = urllib2.urlopen( req )
  print con.read()
except Exception as excp:
  print excp.read()

请问可能出什么问题呢?

1 个回答

5

这个问题现在解决了。问题在于请求应该用GET方式,而不是POST方式,因此所有的查询参数应该通过网址传递,而不是作为POST数据传递。所以在我的例子中,获取朋友的代码大概是这样的:

url = 'https://graph.facebook.com/me/friends/'
params = {'access_token': 'a valid access-token...', 'fields': 'id,name,birthday'}

try:
  con = urllib2.urlopen( url + '?' + urllib.urlencode(params))
  print con.read()
except Exception as excp:
  print excp

希望这能帮到某个人。

撰写回答