Как разместить на фан-странице в Facebook с пользовательской веб-страницы в качестве посетителя (код PHP) - PullRequest
0 голосов
/ 03 ноября 2011

Я хочу, чтобы посетители моего сайта публиковали сообщения на своей фан-странице в Facebook со страницы моего сайта.Аутентификация пользователя должна быть сделана перед публикацией.Как я могу это сделать?В настоящее время я могу публиковать сообщения на своей фан-странице fb только как администратор.

Код, который я использую, приведен ниже.

    define("FB_APIKEY", "xxxxxxxx");
    define("FB_SECRET", "xxxxxxxx");
    $pageid      =   xxxxxxxxxxxx; //replace it by your desire facebook page id
    require_once("src/facebook.php");
    require_once("php/facebook.php");

    $facebook = new Facebook(array('appId'  => "xxxxxxxxxxxxxxxx",'secret' =>"xxxxxxxxxxxxxxxxxxx",));

    $user = $facebook->getUser();
    $user = (string)$user;
    if ($user!="") {
    // The user is logged in
    try {

    $user_profile = $facebook->api("/".$user);
$fb = new Facebook1(FB_APIKEY, FB_SECRET);
$userId = $user;

$targetId = "xxxxxxxxx"; // Page ID of the fan page

    $fb->api_client->user = $userId;
    $fb->api_client->session_key = $sessionKey;
    $fb->api_client->expires = 0; 

    $fb->set_user($userId, $sessionKey); // set the 'logged in' user

    // first, check if this UID is a valid user of this application
    $isAppUser = $fb->api_client->users_isAppUser($userId);

    // second, check whether this user has set the permission needed
    // since my app need these permissions: offline_access, read_stream, publish_stream
    $offline_access = $fb->api_client->users_hasAppPermission('offline_access', $userId);

    $message="Test message for fabudeal";

    // if everything is okay...
    if ($offline_access && $isAppUser) {
    // write to this user's Wall
    $fb->api_client->stream_publish($message, $attachment, null, $targetId, $userId);
    }

    } catch (FacebookApiException $e) {    

    $user = null;
     }
    } 

Пожалуйста, помогите мне исправить это .....

1 Ответ

1 голос
/ 07 ноября 2011

Я нашел решение для моей проблемы, используя FB javascript SDK. Код, который я использовал, приведен ниже. Думаю, кому-то это может пригодиться.

<div id="user-info"></div>
<textarea name="message" id="message" cols="40" rows="5"></textarea>

<p><button id="fb-auth">Submit</button></p>


<script>
window.fbAsyncInit = function() {
FB.init({ appId: 'YOUR APP_ID', 
        status: true, 
        cookie: true,
        xfbml: true,
        oauth: true});

function updateButton(response) {
var button = document.getElementById('fb-auth');

if (response.authResponse) {
//user is already logged in and connected
  var userInfo = document.getElementById('user-info');
   FB.api('/me', function(response) {
      var userInfo = document.getElementById('user-info');
      userInfo.innerHTML = 
            '<img src="https://graph.facebook.com/' 
        + response.id + '/picture" style="margin-right:5px"/>' 
        + response.name;
    }); 

  button.onclick = function() {
  var access_tokn = response.authResponse.access_token;
    var msg = document.getElementById('message').value;

    var wallPost = {
        access_token: access_tokn,
        message: msg
    };

    FB.api('/YOUR_PAGE_ID/feed', 'post', wallPost, function(response) {
        if (!response || response.error) {
            alert('Error occurred');
        } else {
            //alert('Success!');
            location.reload(true);
        }
    });
  };
} else {
  //user is not connected to your app or logged out
  button.innerHTML = 'Submit';
  button.onclick = function() {
    FB.login(function(response) {
  if (response.authResponse) {
        FB.api('/me', function(response) {
      var userInfo = document.getElementById('user-info');
      userInfo.innerHTML = 
            '<img src="https://graph.facebook.com/' 
        + response.id + '/picture" style="margin-right:5px"/>' 
        + response.name;
    }); 
    var access_tokn = response.authResponse.access_token;
    var msg = document.getElementById('message').value;

    var wallPost = {
        access_token: access_tokn,
        message: msg
    };

    FB.api('/YOUR_APP_ID/feed', 'post', wallPost, function(response) {
        if (!response || response.error) {
            alert('Error occurred');
        } else {
            //alert('Success!');
            location.reload(true);
        }
    });

      } else {
        //user cancelled login or did not grant authorization
      }
    }, {scope:'email,read_stream,publish_stream'});     
  }
}
}

  // run once with current status and whenever the status changes
  FB.getLoginStatus(updateButton);
  FB.Event.subscribe('auth.statusChange', updateButton);    
  };

(function() {
  var e = document.createElement('script'); e.async = true;
  e.src = document.location.protocol 
    + '//connect.facebook.net/en_US/all.js';
  document.getElementById('fb-root').appendChild(e);
}());

</script>

Спасибо

...