Facebook офлайновый пошаговый доступ

Возможно, более оптимальный вариант состоит в том, чтобы использовать ufw, чтобы отключить исходящий трафик и только включить его для определенных портов. Это не специализировано.

я думаю для реального получения специализированным, необходимо начать бездельничать с AppArmor. Я не совсем уверен, на самом деле ограничивание на приложение является трудной проблемой.

, Например, в масштабе всей системы установленному Firefox можно было бы позволить исходящие соединения, но что относительно копии Firefox в Вашей домашней папке?

57
задан Community 23 May 2017 в 12:25
поделиться

4 ответа

Я знаю два решения: Java и JavaScript

Java: а. код сервлета (не забудьте импортировать соответствующие jar-файлы):

String url="http://www.facebook.com/login.php?api_key=YOUR_API_KEY&v=1.0";
url+="&fbconnect=true&return_session=true&req_perms=offline_access,status_update";
url+="&next=http://YOUR_FaceBookCallback_SERVLET"; 
response.sendRedirect(url);
return;

// Вам будет предложено войти в facebook и разрешить расширенные разрешения

b. Не забудьте определить свой ConnectUrl (в приложении учетной записи facebook) как http: // YourUrlFromWhereDoYouTurnToTheServletAbove

c. создайте другой сервлет: YOUR_FaceBookCallback_SERVLET (см. выше) с этим кодом:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String session = request.getParameter("session");
//from this string you can obtain your infinite session_key.In order to do this, parse this string as JSON.
//Save it in the database or in the other data storage  
response.sendRedirect(ThePlaceThatYouWant);}

d. Используйте этот секретный ключ session_key следующим образом:

FacebookXmlRestClient  client = new FacebookXmlRestClient(YOUR_API_KEY, FACEBOOK_APPLICATION_SECRET,SECRET_SESSION_KEY);
client.setIsDesktop(false); 
client.users_setStatus("YourMessage");

Если кому-то нужно решение JavaScript (большая дыра в безопасности), напишите мне

3
ответ дан 24 November 2019 в 19:39
поделиться

Не так давно я написал учебник в своем блоге. Это не требует никаких плагинов или чего-то еще, это сделано на PHP, и я это тестировал. Я делал это в основном для настенных сообщений, но после аутентификации вы можете использовать любую функцию, которую хотите.

РЕДАКТИРОВАТЬ: Сообщение больше не существует. FB API все равно обновляется ...

6
ответ дан 24 November 2019 в 19:39
поделиться

Я придумал, как «получить» ключ бесконечного сеанса автономного доступа после долгих раздумий, проб и ошибок и размышлений обо всех других продуктивных способах, которыми я мог бы потратить это время ... согласен, документация facebook могла бы быть намного лучше

1) Если вы используете facebook-java-api .. то взгляните на демонстрационный сайт facebook для "мобильной сети" о том, как отформатировать URL-адрес для запроса автономный доступ
http://itsti.me/index.php

<a href="http://www.facebook.com/connect/prompt_permissions.php?api_key=YOUR_API_KEY&ext_perm=publish_stream%2Coffline_access&next=http%3A%2F%2Fmysite%2Ffacebookconnect&cancel=http%3A%2F%2Fmysite%2Fhome&display=wap"><img alt="Connect" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_light_medium_long.gif" id="fb_login_image"/></a>

2) Что касается того, как получить автономный сеансовый ключ из сеанса .. Фокус в том, что когда facebook перенаправляет пользователя на "следующий" URL-адрес справа после предоставления автономного доступа вы должны снова получить сеанс facebook .. этот новый сеанс будет иметь бесконечный сеансовый ключ.
вот пример для мобильного Интернета ... вы сможете понять это для обычного веб-сайта. auth_token используется только для мобильных веб-сайтов .. вам может не понадобиться для обычного веб-сайта

FacebookJsonRestClient fbc = new FacebookJsonRestClient(MY_API_KEY, SECRET, sessionKey);
String auth_token = request.getParameter("auth_token");
System.out.println("infinite session kEY = " +   fbc.auth_getSession(auth_token));
2
ответ дан 24 November 2019 в 19:39
поделиться

С новым Facebook Graph API все стало немного проще, но гораздо менее хорошо документировано. Вот что я сделал, чтобы иметь возможность загружать посты на стене как я из php-скрипта только на стороне сервера (не в рамках сессии браузера):

  1. создайте приложение facebook, если у вас его еще нет, пригодное для этого проекта http://www.facebook.com/developers/apps.php#!/developers/createapp.php -- и установите режим песочницы/режим разработчика! @ Advanced Settings > Sandbox Mode > Enable (Позволяет только разработчикам вашего приложения видеть его). Вам понадобятся ID приложения (APP_ID) и секретный ключ (SECRET_KEY), которые указаны в сводке аккаунта разработчика этого приложения, но не старый API-ключ.

  2. загрузите браузер, уже войдя в fb под учетной записью, под которой вы хотите, чтобы ваше приложение на стороне сервера подключалось, и нажмите "разрешить" для запрашиваемых разрешений: https://graph.facebook.com/oauth/authorize?client_id=APP_ID&scope=offline_access,read_stream&redirect_uri=http://www.facebook.com/connect/login_success.html

  3. скопируйте параметр "code" из полученной строки запроса url, используйте его в: https://graph.facebook.com/oauth/access_token?client_id=APP_ID&redirect_uri=http://www.facebook.com/connect/login_success.html&client_secret=APP_SECRET&code=CODE_FROM_2. И скопируйте правую часть access_token= в текст результирующей страницы, который будет иметь структуру: APP_ID|HEXNUM-USER_ID|WEIRD_KEY

  4. теперь загрузите либо из graph api, либо из классического rest api, используя токен доступа oath, который вы только что получили (где SOURCE_ID - это facebook id для пользователя/группы/что угодно, что вы ищете):

    
    

Заметим, что graph api и rest api возвращают не только разные структуры, но и разную информацию - поэтому здесь я предпочитаю результаты из rest api (первый вариант), хотя мне нравится возможность ограничивать поля в новом graph api (второй вариант).

Посмотрите на http://developers.facebook.com/docs/authentication/ в разделах "Запрос расширенных разрешений" и "Аутентификация пользователей в веб-приложении" для официальных (скудных) подробностей.

Если вы хотите сделать это обычным, то есть программным способом, вот автоматизированная версия шагов 2+3:

Поместите это на свой веб-сервер как "facebook_access_token.php":

<?php $token = explode('=', file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=APP_ID&redirect_uri=http://$_SERVER[SERVER_NAME]$_SERVER[PHP_SELF]&client_secret=APP_SECRET&code=" . 
(get_magic_quotes_gpc() ? stripslashes($_GET['code']) : $_GET['code']))); 
echo $token[1]; 
// store this, the access token, in the db for the user as logged in on your site -- and don't abuse their trust! ?>

И направьте пользователей в их браузерах на: https://graph.facebook.com/oauth/authorize?client_id=APP_ID&scope=offline_access,read_stream&redirect_uri=http://www.example.com/facebook_access_token.php

63
ответ дан 24 November 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: