Что такое верификационный токен в Facebook Realtime API - PullRequest
2 голосов
/ 20 февраля 2012

Я пытаюсь реализовать API-интерфейс Facebook Realtime с моим приложением.Я хочу получить новости с моей страницы в Facebook.Я получил 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 400: Неверный запрос, но если я вызываю URL без параметров url, я получаю {"data": []}

Обратите внимание, что в параметрах url я принимаю verify_token, случайную строку и callback_url не совпадает с параметром redirect_url для приложения facebook (просто хочу знать, нужно ли указывать здесь тот же самый URL)?)

Скажите, пожалуйста, что я делаю не так?Я использую Python / Django для реализации.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Я понял это ... , , , , Сделайте POST-запрос к 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'

Передать {} в качестве параметров сообщения ..... Убедитесь, что your_callback_url должен быть доступным. Он не будет работать на локальном хосте (я так думаю ... Я не смог протестировать его на локальном хосте.)

Итак, в 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: Пожалуйста, посетите следующий URL: Обработка запроса уведомлений от Facebook после успешной подписки

2 голосов
/ 20 февраля 2012

Используйте POST, а не GET, с пустым телом & object, fields, callback_url и verify_token, передаваемыми в качестве параметров запроса в URL.

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

...