【问题标题】:What is verify token in Facebook Realtime API什么是 Facebook Realtime API 中的验证令牌
【发布时间】:2012-02-20 12:00:27
【问题描述】:

我正在尝试使用我的应用程序实现 Facebook Realtime api。我想从我的“facebook PAGE”中提取提要。 我已经获得了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来实现的。

【问题讨论】:

  • -1 :问题本身和接受的答案都与问题的标题无关。搜索结果返回这个没有帮助的问题。

标签: python facebook real-time facebook-authentication


【解决方案1】:

使用 POST 而不是 GET,正文为空 & objectfieldscallback_urlverify_token 作为 url 中的查询参数传递。

https://developers.facebook.com/docs/reference/api/realtime/

【讨论】:

  • 在我的代码中 call_url 进行 POST 调用... 代码 - urlresponse = urllib2.urlopen(url, urllib.urlencode(url_params), timeout=socket.getdefaulttimeout()).read().. ..我在从 url_params 中删除 access_token 后尝试过...仍然无法正常工作.... :(
  • 根据您的评论更新了我的答案。
  • 不....仍然无法正常工作...您能否提供一些添加订阅Facebbok实时api的示例代码...谢谢... :)
  • 我已经在 J​​ava 中实现了这一点,并使用 POST 到 https://graph.facebook.com/${APP_ID}/subscriptions?access_token=XXX&object=user&fields=feed&verify_token=YYY&callback_url=http://example.com,但正文为空。
【解决方案2】:

我想通了... . . . . 向 url 发出 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 应该为空。

带有 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

【讨论】:

  • 请接受我上面的回答(而不是你自己的)——即使它不是 Python 也为你提供了解决方案。
  • 是的,当然.. . 解决方案由您提供... 再次非常感谢... :)
猜你喜欢
  • 2011-11-23
  • 2021-09-30
  • 2021-02-07
  • 2018-08-21
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2015-02-25
  • 2019-04-08
相关资源
最近更新 更多