【问题标题】:Facebook API: How to post to my own wall page?Facebook API:如何发布到我自己的墙页?
【发布时间】:2013-10-08 16:48:13
【问题描述】:

好吧,我可能有很多相同的问题。但我无法解决如何处理我的情况。 开始吧:

我开发了一个房地产上市网站。流程图很简单。用户可以使用 facebook 登录发布任意数量的帖子。

现在他们都没事了。我还可以解决每当用户完成发布时,它会自动发布到他们的个人/用户墙页面。

但我希望每个列表也应该发布在我的房产列表页面上。无论是以发帖用户的身份还是以页面名称的身份发帖,都没有问题。但我需要确保它不会使用我的个人/用户/页面管理员。

所以我找不到如何解决这个问题的任何答案。如何在单个网站会话中,我的脚本可以发布到发布帖子的用户墙,也可以发布到我的页面。如果禁止外国人而不是管理员的用户发布到我的页面,那么当创建的facebook api属于用户时,如何以页面本身的名称发布到我的页面。我需要创建不同的 facebook api 对象吗?需要帮助..感谢任何可以帮助我的人。真的很感激。

下面是我使用的代码:

$attachment = array(
                'message' => FB_STREAM_MSG,
                'picture' => $imgsrc,
                'link' => $seourl,
                'name' => $prop_name,
                'caption' => FB_STREAM_CAP,
                'description' => substr($prop_desc,0,150) . '..',
            );
            $facebook->api("/$user/feed", 'POST', $attachment);
            //$facebook->api("/".FB_PAGE_ID, 'POST', $attachment); //this doesn't work.

【问题讨论】:

  • 要发布到页面作为页面,您需要一个页面访问令牌。 developers.facebook.com/docs/facebook-login/access-tokens
  • 据我所知,页面访问令牌授予登录用户拥有的访问页面。它也可以访问我的页面墙吗?我打算在我的页面上发帖,但在 web 上创建的 session/fb api 属于用户。登录的用户是外国人,他可能不是我,也可能没有访问/管理页面。
  • 我之前尝试过添加新权限“manage_pages”。但似乎它授予应用程序管理登录用户拥有的页面,它没有说明授予对我拥有的页面的访问权限。而且上面的代码还是不行。
  • 当然,只有页面的管理员才能获得该页面的页面访问令牌。但是,如果您得到一个不会过期的文档,如文档中所述,您可以将其保存在您的服务器上并将其用于这些 API 调用。
  • 啊。我得到了它。所以我只需要一次获取页面访问令牌并在以后使用它,即使 api 分配给不同的用户。非常感谢。我已经尝试过了,似乎有效。但我仍然有一个关于谁发帖的问题。我试过了,帖子显示它是由用户在最近发布的用户部分下发布的。我期待它按页面发布。

标签: facebook api facebook-graph-api facebook-fql facebook-php-sdk


【解决方案1】:

好的...问题全部解决了!

要发布到其他用户墙,用户需要登录以生成用户令牌和代码,通常如下所示:

$attachment = array(
'message' => ClearText_FB($prop_name),
'picture' => $imgsrc,
'link' => $seourl,
'name' => ClearText_FB($prop_name),
'caption' => FB_STREAM_CAP,
'description' => ClearText_FB(substr($prop_desc,0,150) . '..'),
);
$facebook->api("/$user/feed", 'POST', $attachment);

并且要发布到我们自己的页面墙上,无论用户是谁,用户是否是页面的管理员都没有关系。但是获取页面访问令牌以授予应用程序发布到页面墙很重要。 fb 文档说页面访问令牌将永远存在,因此我们只需要获取一次并保存以供下次使用。

第一次获取页面访问令牌:

$page_access_token = "";
            $result = $facebook->api("/me/accounts");
            foreach($result["data"] as $page) {
                if($page["id"] == $page_id) {
                    //$page_access_token = $page["access_token"];
                    $page_access_token = $facebook->api("/".FB_PAGE_ID."?fields=access_token");
                    break;
                }
            }

然后将 $page_access_token 值保存到 server/db 或文件中。上面的代码不再需要了。注释掉或删除它。删除“名称”字段,因为它似乎会将帖子放在其他用户帖子部分下。这将作为页面而不是用户发布到页面墙:

$attachment = array(
'message' => ClearText_FB($prop_name),
'picture' => $imgsrc,
'link' => $seourl,
'description' => ClearText_FB(substr($prop_desc,0,150) . '..'),
'access_token' => $page_access_token,
);
$facebook->api("/".FB_PAGE_ID.'/feed', 'POST', $attachment);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多