2013-07-11 4 views
0

Мне нужен URL-адрес this для поиска по графу API в Facebook для извлечения данных.Запрос на поиск объектов json из facebook graph api (поиск)

Когда я попытался использовать этот url, это дает

{ 
    "error": { 
     "message": "(#200) Must have a valid access_token to access this endpoint", 
     "type": "OAuthException", 
     "code": 200 
    } 
} 

Я буду использовать это над Android. Может ли кто-нибудь помочь мне в этом.

ответ

2

Facebook API Graph был открыт до недавнего времени, когда они добавили этот access_token.

С их documentation они объясняют, как создать токен доступа. К сожалению, создавая таким образом, вам нужно будет заниматься каким-то заданием, которое будет обновлять (то есть обновлять существующий токен доступа/генерировать новый токен доступа) через некоторое время ваш access_token, чтобы вы могли использовать График API.

Скорее всего, есть некоторые библиотеки, которые могут иметь дело с обновлением или созданием нового токена доступа, но, возможно, оно не подходит вашему приложению.

Чтобы избежать упомянутой выше проблемы, я обнаружил, что существует способ иметь токен доступа без истечения срока действия.

Что вам нужно сделать, это следующие шаги:

  1. Создать учетную запись Facebook (если вы не один, или если вы хотите создать учетную запись только для целей развития)
  2. Go на Facebook Developers страницы (Регистрация в качестве разработчика, активировать аккаунт и этажерку)
  3. Создать новое приложение на странице Facebook Developers App
  4. Перейти к вашему приложению и в вашем Settings, нажмите на Edit Settings.
  5. Перейти на Sandbox Mode и выберите Disabled
  6. На левой стороне, из раздела Settings, нажмите кнопку Дополнительно.
  7. В разделе Authentication проверьте App Type и выберите Web (если это уже не то)
  8. Для заключительного шага, вернитесь в раздел Basic в Settings, и вы увидите две особенности приложения:

    App ID и App Secret

    Вы можете использовать эти два кода, чтобы извлечь выгоду из access_token, который не истекает следующим образом: APP ID|APP Secret (наблюдается вертикальная полоса между кодами)

Итак, теперь вы можете делать запросы следующим образом:

https://graph.facebook.com/search?q=mark&access_token=APP_ID|APP_SECRET 

Заметьте, что я не упомянул в URL-type=user. Для вашего случая вам нужно будет создать истекающие токены доступа.Вы можете быстро создать временный маркер, как это:

GET /oauth/access_token? 
client_id={app-id} 
    &client_secret={app-secret} 
    &grant_type=client_credentials 

(см Access Tokens page из документации Facebook,). Если вы не можете найти решение, которое будет заниматься автоматически освежать маркера доступа, я могу объяснить, что я сделал, создавая фоновую работу, которая будет обновлять его раз в то время:

Это возвращает ответ, похожий на этот:

access_token=NEW_ACCESS_TOKEN&expires=TIME_UNTIL_IT_EXPIRES. 

As насколько я помню, вы сможете использовать новый токен доступа на 60 дней без проблем (мне было легче создавать новый один раз в месяц, используя задания cron).

Таким образом, имея, что ответ вы можете быстро сделать простой регулярное выражение:

access_token=(.*)&expires=(.*) 

И вы можете сделать:

String newAccessToken = matcher.group(1); 

Заменить существующий маркер доступа в вашем файле/таблицы БД, и вы сделанный.

С помощью этого маркера доступа вы сможете сделать запрос:

https://graph.facebook.com/search?q=mark&type=user&access_token=APP_ID|APP_SECRET 
Смежные вопросы