我正在尝试使用我的应用程序实现Facebook Realtime api。我想从我的'facebook PAGE'中提取Feed。 我已经获得了app_access_token ...
app_access_token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
url = 'https://graph.facebook.com/' + FB_CLIENT_ID + '/subscriptions?access_token=' + app_access_token
url_params = {'access_token':app_access_token,'object':'page', 'fields':'feed', 'callback_url':'http://127.0.0.1:8000/fb_notifications/', 'verify_token' : 'I am taking a random string here...'}
urlResponse = call_url(url, url_params)
每次我用url参数调用url时,都会收到错误:HTTP Error 400:Bad Request
但是如果我在没有url参数的情况下调用url,我会得到{"data": []}
请注意,在url参数中,我正在使用verify_token,一个随机字符串,并且callback_url与facebook应用程序的redirect_url参数不同。(只是想知道是否有必要在此处输入相同的URL?)
请告诉我我做错了什么? 我正在使用python / django来实现。
答案 0 :(得分:2)
使用POST而非GET,使用空身& object
,fields
,callback_url
和verify_token
作为网址中的查询参数传递。
请参阅https://developers.facebook.com/docs/reference/api/realtime/。
答案 1 :(得分:2)
我已经想到了...... 。 。 。 。 发出对网址的POST请求:
'https://graph.facebook.com/' + FB_CLIENT_ID + '/subscriptions?access_token=' + app_access_token + '&object=page&fields=name&callback_url=' + YOUR_CALLBACK_URL + '&verify_token=' + ANY_RANDOM_STRING + '&method=post'
传递{}作为帖子参数..... 确保应该可以访问your_callback_url。它不适用于localhost(我想是的......我无法在localhost上测试它。)
所以在Python中代码应该是:
url = 'https://graph.facebook.com/' + FB_CLIENT_ID + '/subscriptions?access_token=' + app_access_token + '&object=page&fields=name&callback_url=' + YOUR_CALLBACK_URL + '&verify_token=' + ANY_RANDOM_STRING + '&method=post'
url_params = {}
urlResponse = urllib2.urlopen(url, urllib.urlencode(url_params), timeout=socket.getdefaulttimeout()).read()
urlResponse应为null。
callback_url附带的函数应该返回:
def callback_function(request):
if request.GET: #(Handle this properly!!!)
return request.GET.get('hub.challenge') #hub_challenge for PHP Developers. :)
如有任何疑问,请告诉我!!!
要知道如何处理来自FB的通知: 请访问以下网址: Handling notifications request from Facebook after successful subscription