Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.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
使用Graph&;PHP_Php_Facebook_Api_Facebook Graph Api - Fatal编程技术网

使用Graph&;PHP

使用Graph&;PHP,php,facebook,api,facebook-graph-api,Php,Facebook,Api,Facebook Graph Api,我在使用open graph授权向访问者发布facebook墙时遇到问题,似乎无法找出我的错误所在。我正在使用Github的PHP/SDK库。这是我的密码: <?php require_once('facebook.php'); $facebook = new Facebook(array( 'appId' => 'APP_ID', 'secret' => 'APP_SECRET', 'cookie' => true, )); $session = $fa

我在使用open graph授权向访问者发布facebook墙时遇到问题,似乎无法找出我的错误所在。我正在使用Github的PHP/SDK库。这是我的密码:

<?php
require_once('facebook.php');
$facebook = new Facebook(array(
  'appId'  => 'APP_ID',
  'secret' => 'APP_SECRET',
  'cookie' => true,
));

$session = $facebook->getSession();

$me = null;
//session-based api call
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

//post to wall/stream function
if(isset($_POST['status'])) {
    try {
        $result = $facebook->api(
            '/me/feed',
            'post',
            array(
                'access_token' => 'ACCESS_TOKEN', 
                'message' => $_POST['status']
                )
            );
    } catch (FacebookApiException $e) {
        echo 'Error: ' . print_r($e, true);
    }
}
?>

<!-- HTML Form -->
<form name="" action="index.php" method="post">
    <input type="text" name="status" id="status" value="">
    <input type="submit" value="submit">
</form>


我不知道发生了什么,我已经梳理了十亿个教程、帖子、交流等等,看起来我做的一切都是对的。任何帮助都将不胜感激。

根据您编写的代码,假设您正在使用Javascript SDK生成facebook cookie,这就是
$facebook->getSession()
调用用来登录用户的:您是否正确设置了Javascript SDK


此外,您假设您正在使用的任何应用程序都已获得适当的权限,可以发布到用户的墙上。有关所需权限的详细信息,请参阅。您是否已从用户处获得所请求的权限?

在这里,您并不是在发布之前检查用户是否已登录,我看不到您在要求用户登录的位置。这里有一个更好的方法:

<?php
require_once('facebook.php');
$facebook = new Facebook(array(
  'appId'  => 'APP_ID',
  'secret' => 'APP_SECRET',
  'cookie' => true,
));

$session = $facebook->getSession();

if($session) {
    //post to wall/stream function
    if(isset($_POST['status'])) {
        try {
            $result = $facebook->api(
                '/me/feed',
                'post',
                array(
                    'message' => $_POST['status']
                    )
                );
        } catch (FacebookApiException $e) {
            echo 'Error: ' . print_r($e, true);
        }
    }
} else {
    $loginUrl = $facebook->getLoginUrl(array(
        'req_perms' => 'publish_stream'
    ));
    header("Location: $loginUrl");
}
?>

<!-- HTML Form -->
<form name="" action="index.php" method="post">
    <input type="text" name="status" id="status" value="">
    <input type="submit" value="submit">
</form>

您如何使用您的访问令牌?