如何在没有自动加载器的作曲家的情况下使用Facebook SDK 4.0

时间:2014-10-06 15:27:32

标签: php facebook facebook-php-sdk autoloader

我想向Facebook用户发送通知。

我有以下设置示例,但似乎无法到达任何地方,Keeps给出“找不到Facebook类”的错误。

<?php 
session_start();
require_once 'autoload.php';
require_once( 'src/Facebook/FacebookSession.php' );
require_once( 'src/Facebook/FacebookRequest.php' );

use Facebook\FacebookSession;
use Facebook\FacebookRequest;
$facebook = new Facebook();

$app_id = '654346742464654654';

$app_secret = '--my-secret--';

$app_access_token = $app_id . '|' . $app_secret;

$response = $facebook->api( '/65785757987982452465465445465/notifications', 'POST', array(

                'template' => 'You have received a new message.',

                'href' => 'RELATIVE URL',

                'access_token' => $app_access_token
            ) );    

print_r($response);
?>

感谢。

2 个答案:

答案 0 :(得分:1)

对Facebook API执行基本请求所需的关键类是FacebookSessionFacebookRequest。以下示例尝试在用户的墙上发布。

//First of all, initialize with your Facebook App id and secret

FacebookSession::setDefaultApplication("YOUR_APP_ID", "YOUR_APP_SECRET");

//Now its time to make a new FacebookSession instance

$session = new FacebookSession($accessToken);

//Sending the API request for posting
$response = (new FacebookRequest($session,"POST","/me/feed",array(
                "message" => "I'm a cool guy"
            )))->execute();

$responseObject = $response->getGraphObject();

//do something with the result

此外,您必须确保您的Facebook应用程序具有足够的权限来执行您请求的操作(在这种情况下发送通知)

有关Facebook API权限审核的更多详细信息,请检查: https://developers.facebook.com/docs/apps/review

有关Facebook PHP Api的详细信息: https://developers.facebook.com/docs/reference/php/4.0.0

希望有所帮助

答案 1 :(得分:0)

这就是我为通知所做的事情(没有我的应用程序的所有其他代码)。在我的情况下,用户已发布对论坛主题的新回复。在其他地方,我已经验证了其登录用户发出此请求,因此我可以发起呼叫以发布新通知。当谈到use语句时,我有点懒惰,为了以防万一,我通常会把每一个都放在那里,但我只留下了我认为你可能需要的那些。确保添加错误处理!还有不止一种方法来处理请求。

<?php 

session_start();

require_once 'autoload.php';

use Facebook\FacebookRequest;
use Facebook\FacebookRequestException;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookServerException;
use Facebook\FacebookSession;

use Facebook\GraphObject;

$app_id="APP_ID";
$app_secret="APP_SECRET";

$access_token=$app_id."|".$app_secret;

FacebookSession::setDefaultApplication($app_id,$app_secret);

$session=new FacebookSession($access_token);

try
{
  $request=(new FacebookRequest($session,'POST','/'.$user_id.'/notifications',array('href'=>$url,'template'=>$message,'access_token'=>$access_token)));
  $response=$request->execute();
}
catch(FacebookRequestException $ex)
{
  //Handle error here.
}
catch(\Exception $ex)
{
  //Handle error here.
}

?>