使用PHPSDK4和Javascript SDK发送通知
我正在构建一个Facebook画布应用程序。我使用javascript SDK完成了大部分工作,现在我陷入了可能需要使用PHPSDK4的困境。我正在尝试向我的用户发送通知。为此,我做了一些研究,只能找到有限的可用文档。我将总结要点使用PHPSDK4和Javascript SDK发送通知,javascript,php,facebook,facebook-graph-api,Javascript,Php,Facebook,Facebook Graph Api,我正在构建一个Facebook画布应用程序。我使用javascript SDK完成了大部分工作,现在我陷入了可能需要使用PHPSDK4的困境。我正在尝试向我的用户发送通知。为此,我做了一些研究,只能找到有限的可用文档。我将总结要点 我在JavaScript SDK中执行了所有操作,如登录、检索用户配置文件等 需要使用PHPSDK4发送通知。以下是我迄今为止所做的工作 导入了所有必需的文件,如require_once('Facebook/HttpClients/Facebook httpable.
FacebookSession::setDefaultApplication('xxxxxxx','xxxxxxxx');
$appSession = FacebookSession::newAppSession();
已获得如下所示的新应用程序访问令牌
FacebookSession::setDefaultApplication('xxxxxxx','xxxxxxxx');
$appSession = FacebookSession::newAppSession();
尝试使用图形API执行通知
$notification = new FacebookRequest(
$appSession,
'POST',
'/{777911845584420}/notifications',
array (
'href' => "apps.wehubs.com/ashifshereef/amritham2/againsample/again2/",
'template' => 'You have been tagged, please set privacy preference',
)
);
$response = $notification->execute();
$graphObject = $response->getGraphObject();
我什么也得不到。没有通知,什么都没有。我知道这个代码有点奇怪。要添加的内容,或未正确执行的内容。我非常精通JavaCScript,但不精通PHP。我的问题很清楚。如何使这东西工作?很抱歉这些垃圾,这是我所能想到的,PHP SDK 4上提供的相当糟糕的文档。我只想用CURL来代替应用程序通知:
$accessToken = $appId . '|' . $appSecret;
$notificationText = 'The cake is a lie.';
//init curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'facebook');
//send notification
$url = 'https://graph.facebook.com/' . $userId . '/notifications' .
'?access_token=' . $accesstoken .
'&template=' . $notificationText .
'&href=';
curl_setopt($ch, CURLOPT_URL, $url);
$curlResult = curl_exec($ch);
资料来源:
只要用户授权了你的应用程序,就可以了。请记住,您不会在移动设备上看到应用程序通知
还有一件事:“apps.wehubs.com/…”不正确,它需要是画布的绝对URL或相对URL(apps.facebook.com/yournamespace/relativeurl)。但不确定它是否能与外部URL一起使用,因为应用程序通知仅适用于facebook.com上的应用程序()。这对我很有效:
<?php
require ('facebook-sdk/autoload.php');
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookRequestException;
use Facebook\Entities\AccessToken;
use Facebook\GraphUser;
session_start();
?>
<html>
<head>
</head>
<body>
<div>Testing Notifications</div>
<?php
try {
FacebookSession::setDefaultApplication(
"{your_app_id}",
"{your_app_secret}"
);
$appSession = FacebookSession::newAppSession();
$request = new FacebookRequest(
$appSession,
'POST',
'/'. '{user_id}' .'/notifications',
array (
'href' => "index.php",
'template' => '{your_notification_text}',
)
);
$response = $request->execute();
$graphObject = $response->getGraphObject();
echo 'Success?: ' . $graphObject->getProperty('success');
}catch(FacebookRequestException $ex) {
echo 'FacebookRequestException: ' . $ex->getMessage();
}catch(\Exception $ex) {
echo 'Exception' . $ex->getMessage();
}
?>
</body>
</html>
测试通知
非常感谢。但我感到困惑的是,“用户授权应用程序”是在Javascript SDK中完成的。我第一次在这里使用PHPSDK。是否存在任何会话问题?没有,因为您仍然需要使用应用程序访问令牌进行通知。用户只需要使用您正在使用的任何功能进行授权,使用JSSDK登录是最好的方式。不需要额外的许可证。顺便说一句,它仍然不起作用。显示一个空白的PHP页面。好吧,如果我把上面的代码放在一个单独的PHP文件中,并用我的appid和secret配置它,然后从浏览器调用该PHP文件,那么它应该与所有那些JS函数隔离工作吗?一个空白页?浏览器控制台说什么?无论如何,没有回声,不过你可以把$curlResult变为var_dump。谢谢。我是卷发新手。是否需要先进行安装,或者需要包括哪些库?这些facebook文件呢?需要_一次('Facebook/HttpClients/Facebook-httpable.php');需要_一次('Facebook/HttpClients/FacebookCurl.php');只需要_一次('Facebook/HttpClients/FacebookCurlHttpClient.php');需要_once('Facebook/Entities/AccessToken.php');需要_once('Facebook/Entities/SignedRequest.php');需要_一次('Facebook/FacebookSession.php');