Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 在页面上以页面形式发布消息的简单示例_Facebook_Api - Fatal编程技术网

Facebook 在页面上以页面形式发布消息的简单示例

Facebook 在页面上以页面形式发布消息的简单示例,facebook,api,Facebook,Api,今天,我几乎尝试了Facebook API的所有功能。我正在使用PHPSDK。它以用户、页面和应用程序的身份登录 我现在已经尽可能地创建了最简单的登录系统: Login.php $app_id = "xx"; $app_secret = "xx"; $my_url = "continue.php"; session_start(); // TOESTEMMING VRAGEN $code = $_REQUEST["code"]; if(empty($code)) { $_SESSI

今天,我几乎尝试了Facebook API的所有功能。我正在使用PHPSDK。它以用户、页面和应用程序的身份登录

我现在已经尽可能地创建了最简单的登录系统:

Login.php

$app_id = "xx";
$app_secret = "xx";
$my_url = "continue.php";
session_start();   
// TOESTEMMING VRAGEN
$code = $_REQUEST["code"];
if(empty($code)) {
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
    . $_SESSION['state'] . "&scope=manage_pages";
    echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
我正在登录,我可以授予访问权限,但当我继续时,我会收到以下消息:

stdClass对象([错误]=>stdClass对象([消息]=>活动 访问令牌必须用于查询有关当前用户的信息。 [类型]=>OAutheException[代码]=>2500))

我试图实现的是:在我网站的管理员部分,我想创建一个对话框,管理员可以将更新作为页面帐户发布到facebook页面。我还尝试以应用程序的形式登录,但我不知道这是否是正确的解决方案

我在网上找不到关于哪种解决方案需要哪种方法的教程。作为应用程序登录的优点是,管理员不需要拥有facebook帐户。但我可以(作为一个应用程序)将更新发布到facebook页面吗


对不起,我有点困惑。谢谢

您的代码不完整。我建议你重读一遍

在获取页面访问令牌之前,您需要用户访问令牌

if($\u会话['state']&&($\u会话['state']===$\u请求['state'])){
$token_url=”https://graph.facebook.com/oauth/access_token?"
“client_id=“.app_id.”和redirect_uri=“.urlencode($my_url)
.“&client_secret=”.$app_secret.&code=”.$code;
$response=file\u get\u contents($token\u url);
$params=null;
parse_str($response,$params);
$\u会话['access\u token']=$params['access\u token'];
$graph_url=”https://graph.facebook.com/me?access_token=" 
.$params['access_token'];
$user=json_decode(文件获取内容($graph_url));
echo(“你好”。$user->name);
}
否则{
echo(“状态不匹配。您可能是CSRF的受害者”);
}

在您自己的页面上发布的基本示例(作为页面发布):

确保用户/页面所有者已验证应用程序并已登录(常用FB API方法)。用户必须具有该页面的
管理页面
(管理员)权限

$facebook = new Facebook(... );
$user = $facebook->getUser();
获取页面访问令牌:

$page_id = 123456;
$page_info = $facebook->api('/'.$page_id.'?fields=access_token');
使用页面访问令牌发布到您的页面:

if (!empty($page_info['access_token'])) {
  $args = array(
    'access_token' => $page_info['access_token'],
    'message' => 'Testing SDK !',
  );
  $post_id = $facebook->api('/'.$page_id.'/feed', 'post', $args);
  error_log('successfully posted post id '.$post_id);
} catch (FacebookApiException $e) {
  error_log('caught exception: '. $e);
}
如果仍然出现访问令牌错误,请记录用户访问令牌,并在中测试/粘贴用户访问令牌,并验证
manage\u pages
perms是否已启用


另请参阅这篇有用的文章。

您发布到页面的代码在哪里?我甚至没有走那么远,因为每次都有一些与身份验证有关的东西。。。就像上面我的消息中的活动访问令牌。访问令牌是Facebook识别您请求的方式。你有吗?您是否将其分配给$params['access_token']?如果两个答案都是肯定的,请向我们显示代码,因为根据错误消息,访问令牌显然存在问题。如@Alon_a的评论中所述,请查看此内容。感谢您的回复。这些都是我需要facebook用户的方法。我想创建一个解决方案,使网站管理员不必拥有facebook帐户,但可以作为facebook页面或应用程序直接登录。所以他可以将信息作为页面或应用程序发布到页面的墙上。谢谢你的回复,确实是不完整的。但那是因为我没有得到我想要的结果。是否可以在没有facebook的情况下以页面或应用程序的形式登录?此时此刻,我正在创建一个网站。该网站也有一个facebook页面。但并非所有管理员都有facebook。这是否可能(通过PHP)以页面或应用程序的身份登录,然后在页面的墙上发布内容?如果您通过Facebook上的有效用户(该用户是您页面的管理员)的用户令牌使用页面令牌,那么它可以工作。看看这个,它展示了如何在不需要不断验证的情况下显示页面帖子。也许我可以使用这个过程。。。但这个例子是从Facebook获取信息。我想以页面的形式登录我的网站,然后像facebook一样以页面的形式发布到页面的墙上,而不是以个人的身份。我不知道这是否可能。@p3sn您不能以页面的形式登录Facebook(商业帐户除外),所以是的,这是不可能的。在这个过程中,你需要一个Facebook用户。那么,商业账户页面和我用个人账户创建的页面有什么区别呢?我想我也可以(作为个人)为一家企业创建page#谢谢你的回复。我也已经回复了phwd。我正在寻找一个以应用程序身份登录的解决方案(我也尝试过一次)。但也可以将其作为应用程序发布在页面的墙上吗?我想作为应用程序登录,因为不是所有网站管理员都有facebook。谢谢。你不能以应用程序的形式在页面上发布。嗯,好的,这就把事情弄清楚了。所以我可以忘记作为应用程序登录。谢谢
if (!empty($page_info['access_token'])) {
  $args = array(
    'access_token' => $page_info['access_token'],
    'message' => 'Testing SDK !',
  );
  $post_id = $facebook->api('/'.$page_id.'/feed', 'post', $args);
  error_log('successfully posted post id '.$post_id);
} catch (FacebookApiException $e) {
  error_log('caught exception: '. $e);
}