Как использовать мой длинный (60-дневный) токен доступа для получения пользовательских данных из facebook (в автономном режиме)

Я не могу найти ни одного примера на facebook dev. или здесь, в stackoverflow, поэтому мне нужно сделать этот пост, который я не думал, что должен.

У меня есть веб-сайт, который использует Facebook JavaScript SDK для входа в него пользователей. Когда я вхожу в систему, я использую

FB.login(), scope:{'email, offline_access'}

Когда вход в систему завершен, я получаю недолговечный токен доступа и передаю его:

https://graph.facebook.com/oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id=APP_ID&
    client_secret=APP_SECRET&
    fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN 

Так что я получаю долгоживущий 60-дневный токен в ответ. Это делается на стороне сервера, и я сохраняю новый долговременный токен в своей базе данных вместе с идентификатором facebook и т. д.

Теперь к моей проблеме. Каждый день в определенное время я хочу обновлять данные пользователей в своей базе данных, используя токен доступа, который, как я читал, может. Но как мне это сделать?

Я привык делать это после FB.login(), но теперь, когда пользователь не входит в систему, я не знаю, как сделать вызов FB.api, используя мой сохраненный токен?

FB.api(/me....)

С уважением, Кристоффер


person korrekorre    schedule 28.03.2013    source источник
comment
offline_access больше не существует, так что не спрашивайте. И если вы хотите обновить базу данных, то я предполагаю, что мы говорим здесь о чем-то на стороне сервера — так зачем вам использовать для этого FB.api?   -  person CBroe    schedule 28.03.2013
comment
Хорошо, я знаю, что он устарел, но не был уверен, нужен ли он мне. Удалим тогда   -  person korrekorre    schedule 28.03.2013


Ответы (1)


Поскольку вам необходимо синхронизировать/обновлять информацию, когда пользователь не вошел в систему, вам придется использовать взаимодействие на стороне сервера. Вы можете использовать свой сохраненный токен расширенного доступа и установить его в Facebook PHP SDK с использованием setAccessToken().

$facebook->setAccessToken($extended_access_token);

После этого вы можете вызвать метод $facebook->api(...) для выполнения задачи, которую вы намереваетесь выполнить.

person Anvesh Saxena    schedule 28.03.2013
comment
Однако я не использую PHP в качестве языка сервера. Я использую Scala с платформой Play. Есть идеи, как это решить? - person korrekorre; 28.03.2013
comment
Первая ссылка объясняет, как расширить недолговечный токен доступа пользователя через API — на каком языке вы его реализуете, не имеет значения. - person CBroe; 29.03.2013
comment
У меня не было проблем с продлением токена. Моя проблема заключалась в том, чтобы использовать его для получения данных из facebook, но не из javascript или PHP. Однако я нашел правильный URL-адрес для вызова API графа: graph.facebook.com /'facebookID'?access_token=xxxx... - person korrekorre; 02.04.2013