Facebook API Graph был открыт до недавнего времени, когда они добавили этот access_token
.
С их documentation они объясняют, как создать токен доступа. К сожалению, создавая таким образом, вам нужно будет заниматься каким-то заданием, которое будет обновлять (то есть обновлять существующий токен доступа/генерировать новый токен доступа) через некоторое время ваш access_token, чтобы вы могли использовать График API.
Скорее всего, есть некоторые библиотеки, которые могут иметь дело с обновлением или созданием нового токена доступа, но, возможно, оно не подходит вашему приложению.
Чтобы избежать упомянутой выше проблемы, я обнаружил, что существует способ иметь токен доступа без истечения срока действия.
Что вам нужно сделать, это следующие шаги:
- Создать учетную запись Facebook (если вы не один, или если вы хотите создать учетную запись только для целей развития)
- Go на Facebook Developers страницы (Регистрация в качестве разработчика, активировать аккаунт и этажерку)
- Создать новое приложение на странице Facebook Developers App
- Перейти к вашему приложению и в вашем
Settings
, нажмите на Edit Settings
.
- Перейти на
Sandbox Mode
и выберите Disabled
- На левой стороне, из раздела
Settings
, нажмите кнопку Дополнительно.
- В разделе
Authentication
проверьте App Type
и выберите Web
(если это уже не то)
Для заключительного шага, вернитесь в раздел 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