如何以访客身份从自定义网页在 Facebook 粉丝页面上发帖(PHP 代码)

发布于 2024-12-13 20:34:29 字数 1736 浏览 3 评论 0原文

我希望我的网站的访问者可以从我的网站页面在我的 Facebook 粉丝页面上发帖。发帖前必须进行用户身份验证。我怎样才能做到这一点?目前我只能以管理员身份发布到我的 Facebook 粉丝页面。

我使用的代码如下。

    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;
     }
    } 

请帮我解决这个问题......

I want to the visitors of my website to post on my facebook fan page, from my website's page. User authentication has to be done before posting. How can I do that? Currently I can post into my fb fan page as admin only.

The code which Im using is give below.

    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;
     }
    } 

Please help me to fix this.....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三生殊途 2024-12-20 20:34:29

我已经使用 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>

谢谢

I have found a solution for my problem using FB javascript SDK. The code which I used is give below. Thought somebody might find it useful.

<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>

Thanks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文