Публикация на стене пользователя без подключения к Интернету или входа в систему — общий доступ к Facebook с использованием Graph API

Привет, я новичок в обмене на Facebook. Я хочу, чтобы пользователь вошел в систему, используя его uid, а затем сохранил их для дальнейшего использования.

Основная цель — поделиться ссылками на стене пользователя.

в следующий раз, не показывая окно facebook, я хочу опубликовать сообщение на его стене через ajax.

Как это возможно, любая помощь в этом будет оценена!

ИЗМЕНИТЬ

Я использовал приведенный пример, а затем попробовал функцию curl

получил эту ошибку

HTTP/1.1 403 Forbidden
Cache-Control: no-store
Content-Type: text/javascript; charset=UTF-8
Expires: Sat, 01 Jan 2000 00:00:00 GMT
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p"
Pragma: no-cache
WWW-Authenticate: OAuth "Facebook Platform" "insufficient_scope" "(#200) 
This API call requires a valid app_id."
Set-Cookie: datr=g4JBTb4OsRZxBAztV7iIkpWg; expires=Sat, 26-Jan-2013 14:34:43 GMT;
path=/; domain=.facebook.com; httponly
X-Cnection: close
Date: Thu, 27 Jan 2011 14:34:43 GMT
Content-Length: 93

{"error":{"type":"OAuthException","message":"(#200) 
This API call requires a valid app_id."}}

РЕДАКТИРОВАТЬ, ЧТОБЫ КТО-ТО МОЖЕТ НАЙТИ ПОЛЕЗНЫМ

СОЕДИНЕНИЕ С ФЕЙСБУК

$facebook_connect =  array(
   'appId'  => 'YOUR APP_ID',
   'secret' => 'YOUR SEC KEY',
          'access_token'=>"USER'S ACCESS TOKEN",
   'cookie' => true
 );

РАЗМЕСТИТЬ НА СТЕНЕ ПОЛЬЗОВАТЕЛЯ

$facebook->api("/PROFILE_ID/feed", "post", array(
"message"=>"Hi Friends Join ****",
"name"=>"You're invited to join ****!",
"link"=>"www.****.com",
"description"=>"Great site",
"picture"=>"http://www.****.com/logo.jpg",
"caption"=>"Join *****"
)

person Harish    schedule 27.01.2011    source источник


Ответы (1)


Я предлагаю вам сначала изучить, как работает Facebook Graph API.

  1. Facebook НИКОГДА не предоставит вам пароль пользователя!
  2. Если вам просто нужно дать пользователю возможность поделиться ссылкой, просто используйте плагин Like. Вы также можете найти более интересные социальные плагины для использования на своем веб-сайте.
  3. Если вы используете аналогичный плагин, он не будет открывать всплывающие окна и будет публиковать ссылку прямо на стене пользователя.
  4. Вы всегда можете использовать диалоговое окно ленты новостей.
  5. Начните читать документацию Facebook.

Теперь, чтобы опубликовать сообщение на стене пользователя (от его имени) без входа в систему, вам потребуется следующее:

  1. приложение access_token
  2. publish_stream, НЕ ТРЕБУЕТСЯ для долгосрочного токена доступа:

Позволяет вашему приложению публиковать контент, комментарии и лайки в потоке пользователя и в потоках друзей пользователя. Это расширенное разрешение на публикацию, которое также включает в себя publish_actions. Однако обратите внимание, что Facebook рекомендует модель обмена, инициируемую пользователем. Пожалуйста, ознакомьтесь с Политикой платформы, чтобы убедиться, что вы понимаете, как правильно использовать это разрешение. Обратите внимание: вам не нужно запрашивать разрешение publish_stream, чтобы использовать диалоговое окно ленты новостей, диалоговое окно запросов или диалоговое окно отправки.

Требуется разрешение.
Это можно сделать несколькими способами:
используя Плагин входа:

<div class="fb-login-button" data-show-faces="true" data-width="200" data-scope="publish_stream" data-max-rows="1"></div>

Вход на стороне сервера (перенаправление в диалоговое окно OAuth):

https://www.facebook.com/dialog/oauth?
     client_id=YOUR_APP_ID
     &redirect_uri=YOUR_URL
     &scope=publish_stream
     &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

PHP-SDK:

$loginUrl = $facebook->getLoginUrl(array("scope"=>"publish_stream"));

JS-SDK с помощью метода FB.login:

 FB.login(function(response) {
   if (response.authResponse) {
     console.log('Welcome!  Fetching your information.... ');
     FB.api('/me', function(response) {
       console.log('Good to see you, ' + response.name + '.');
       FB.logout(function(response) {
         console.log('Logged out.');
       });
     });
   } else {
     console.log('User cancelled login or did not fully authorize.');
   }
 }, {scope: 'publish_stream'});

Публикация:

$USER_ID = "XXXXXXXX"; // Connected once to your APP and not necessary logged-in at the moment
$args = array(
    'message'   => 'Hello from app',
    'link'      => 'http://www.masteringapi.com/',
    'caption'   => 'Visit MasteringAPI.com For Facebook API Tutorials!'
);
$post_id = $facebook->api("/$USER_ID/feed", "post", $args);

Примечание.
Хотя можно публиковать без присутствия пользователя, всегда помните, что Facebook рекомендует модель публикации, инициируемую пользователем.

person ifaour    schedule 27.01.2011
comment
извините, я так напечатал, что я хочу, это автономный доступ к учетной записи пользователя, чтобы я мог публиковать сообщения в его учетной записи, Эван, если он не вошел в систему! отредактировал вопрос - person Harish; 27.01.2011
comment
@Harish: какой серверный язык вы используете? PHP? - person ifaour; 27.01.2011
comment
привет, я использовал пример и попробовал curl для публикации на стене пользователя, получил одну ошибку, не могли бы вы сказать мне, что это такое? - person Harish; 27.01.2011
comment
но где я должен указать токен доступа? - person Harish; 28.01.2011
comment
мне не нужно указывать access_token? - person Harish; 28.01.2011
comment
Ах, извините, вы используете offline_access, тогда да, вам нужно указать access_token как часть массива сообщений! - person ifaour; 28.01.2011
comment
@ifaour, очень хороший пост. Но мой токен доступа истекает через некоторое время. Есть ли способ сделать его постоянным без использования offline_permission? Пожалуйста, помогите мне? - person Anil Bhatt; 24.09.2011
comment
@Anil: нет, чтобы сделать токен доступа постоянным, вам нужно разрешение offline_access. Опять же, это разрешение не требуется для публикации (даже если пользователь в данный момент не в сети). - person ifaour; 24.09.2011
comment
Это вводит в заблуждение.. вы говорите, что вам не нужно автономное разрешение, чтобы публиковать сообщения на стене в любое время. Правильный. Но когда срок действия токена доступа истекает... вы не можете публиковать сообщения, верно? Так что не в любое время... не рай =( - person Henley; 09.10.2011
comment
@Hisoka, это зависит от того, что вы подразумеваете под истечение срока действия. 1) при публикации вам вообще не нужно добавлять access_token 2) и просто сообщить, что даже с offline_access срок действия токенов может истечь (например: если пользователь изменит свой пароль) - person ifaour; 09.10.2011
comment
@ifaour Поскольку в access_token нет необходимости, как Facebook узнает, что вы являетесь вашим приложением? Нам нужно передать что-то вроде app_id? - person lulalala; 31.07.2012