【问题标题】:Post on a Facebook wall as Page, not as user作为主页而不是用户在 Facebook 墙上发帖
【发布时间】:2023-03-06 15:04:01
【问题描述】:

是否可以作为应用程序而不是用户在 Facebook 墙上发帖?据我了解,应用程序不是 Facebook 的有效用户,但有很多关于以 Page 而非 User 或 Application 发布的 cmets。

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

【问题讨论】:

    标签: php facebook facebook-graph-api


    【解决方案1】:

    您需要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

    【讨论】:

    • 这仍然需要用户登录Facebook,对吧?我收到“必须使用活动访问令牌来查询有关当前用户的信息。”错误:/我不能说:“嘿,应用程序,在墙上发帖!”? :]
    • @WASD42:你可以看到/me/accounts在这里你需要页面的管理员,这样你就可以从他的accounts获得页面access_token来使用它。
    • 您可能还应该添加offline_access 权限!
    • @vinzenzweber 确实,如果他不想每次都登录,那么他需要 他的 access_token 在他发布之前获取页面的一个。
    【解决方案2】:

    您必须首先让用户通过 facebook connect 进行授权,并在此请求中请求 manage_pages 权限。您可以使用此权限来获取相关页面的令牌和机密。然后,您使用这些来授权请求​​,而不是您为用户收到的令牌/秘密。

    查看此页面的“页面登录”部分以获取更多信息: http://developers.facebook.com/docs/authentication/

    【讨论】:

    • 消息必须被签名为属于应用程序(或任何 Facebook 页面),而不是 Facebook 用户。想象以下情况: 1. 应用程序的用户(不是 Facebook 的!)在其中执行一些操作; 2. 应用程序在自己的 Facebook 墙或页面上添加关于刚刚发生的事情的消息。严格来说,应用程序的用户不需要在 Facebook 上注册。只需要 Facebook 中的应用程序能够在应用程序的墙上发布消息并且作为应用程序作为作者。
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多