什么是Facebook Realtime API中的验证令牌

时间:2012-02-20 12:00:27

标签: python facebook real-time facebook-authentication

我正在尝试使用我的应用程序实现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来实现。

2 个答案:

答案 0 :(得分:2)

使用POST而非GET,使用空身& objectfieldscallback_urlverify_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