2011-03-16 125 views
12

是否可以作为应用程序发布在Facebook墙上而不是用户?据我了解,应用程序不是Facebook的有效用户,但有许多关于发布为页面而不是用户或应用程序的评论。作为页面发布在Facebook墙上,而不是用户

我该如何使用PHP Facebook API来做到这一点?

回答

4

您必须先通过Facebook连接授予用户授权,并请求manage_pages权限作为此请求的一部分。您可以使用此权限为相关页面获取令牌和秘密。然后,您使用这些来授权请求​​,而不是您为用户收到的令牌/秘密。

看看这个页面的一些额外信息“页面登录”部分: http://developers.facebook.com/docs/authentication/

+0

是必要的消息被签署为属于该应用程序(或任何Facebook页面),而比Facebook用户。想象一下以下情况: 1.应用程序的用户(不是Facebook的!)在其中执行一些操作; 2.应用程序添加一条消息,了解刚刚发生在自己的Facebook墙或页面上的内容。 严格来说,应用程序的用户不需要在Facebook上注册。只有Facebook中的应用程序才有必要在应用程序的墙上发布消息,并且可以在应用程序上发布作者。 – WASD42 2011-03-16 14:48:44

10

您需要publish_stream,manage_pages权限。该代码是这样的:

<?php 
// This code is just a snippet of the example.php script 
// from the PHP-SDK <https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php> 
require '../src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => 'app_id', 
    'secret' => 'app_secret', 
)); 

// Get User ID 
$user = $facebook->getUser(); 

if ($user) { 
    try { 
    $page_id = 'page_id'; 
    $page_info = $facebook->api("/$page_id?fields=access_token"); 
    if(!empty($page_info['access_token'])) { 
     $args = array(
      'access_token' => $page_info['access_token'], 
      'message'  => "I'm a Page!" 
     ); 
     $post_id = $facebook->api("/$page_id/feed","post",$args); 
    } else { 
     $permissions = $facebook->api("/me/permissions"); 
     if(!array_key_exists('publish_stream', $permissions['data'][0]) || 
      !array_key_exists('manage_pages', $permissions['data'][0])) { 
      // We don't have one of the permissions 
      // Alert the admin or ask for the permission! 
      header("Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, manage_pages"))); 
     } 

    } 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream')); 
} 

// ... rest of your code 
?> 

我已经写和深入的教程这一点:How To: Post On Facebook Page As Page Not As Admin User Using PHP-SDK

+0

这仍然需要用户登录到Facebook,对吧?我收到“必须使用有效的访问令牌来查询有关当前用户的信息。”错误:/我不知道:“嘿,应用程序,发贴到墙上!”? :] – WASD42 2011-03-17 10:05:46

+0

@ WASD42:正如你在这里可以看到'/ me/accounts',你需要页面的管理员,这样你就可以从他的'accounts'中获得'access_token'页面来使用它。 – ifaour 2011-03-17 12:13:03

+2

您应该也可以添加'offline_access'权限! – vinzenzweber 2011-03-26 14:02:08

相关问题