我正在构建一个Facebook画布应用程序。我使用javascript SDK完成了大部分部分,现在我陷入了可能需要使用PHP SDK 4的地方。我正在尝试向用户发送通知。为此,我做了一些研究,发现只有有限的文档。我将通过几点总结。
我在JavaScript SDK中执行了登录,检索用户个人资料等所有操作。
需要使用PHP SDK4发送通知。以下是我到目前为止所做的工作。
导入所有必需的文件,如require_once('Facebook / HttpClients / FacebookHttpable.php'); 并使用它们像使用Facebook \ HttpClients \ FacebookHttpable; [我三重交叉检查路径。他们都是正确的。
设置如下的Facebook会话。
FacebookSession::setDefaultApplication('xxxxxxx','xxxxxxxx');
获得了一个新的app访问令牌,如下所示。
$appSession = FacebookSession::newAppSession();
尝试使用Graph 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();
我一无所获。没有通知,没有任何东西。我知道这段代码有些奇怪。要添加的东西,或者没有正确完成的东西。我非常精通javacsript,但不是PHP。我的问题很清楚。如何使这个东西工作?对不起,这是我能想到的,PHP SDK 4上提供了非常糟糕的文档。
答案 0 :(得分:2)
我只会将CURL用于App Notifications:
$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);
来源:http://blog.limesoda.com/2014/08/app-notifications-facebook-apps/
只要用户授权您的应用,这应该没问题。请记住,您不会在移动设备上看到应用程序通知。
还有一件事:“apps.wehubs.com / ...”不正确,它需要是绝对URL - 或Canvas的相对URL(apps.facebook.com/yournamespace/relativeurl)。不确定它是否适用于外部URL,因为App Notifications仅适用于facebook.com上的应用程序(https://developers.facebook.com/docs/games/notifications)。
答案 1 :(得分:1)
这对我有用:
<?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>