使用PHPSDK4和Javascript SDK发送通知

使用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.

我正在构建一个Facebook画布应用程序。我使用javascript SDK完成了大部分工作,现在我陷入了可能需要使用PHPSDK4的困境。我正在尝试向我的用户发送通知。为此,我做了一些研究,只能找到有限的可用文档。我将总结要点

  • 我在JavaScript SDK中执行了所有操作,如登录、检索用户配置文件等

  • 需要使用PHPSDK4发送通知。以下是我迄今为止所做的工作

  • 导入了所有必需的文件,如require_once('Facebook/HttpClients/Facebook httpable.php'); 使用它们就像使用Facebook\HttpClient\FaceBookHttpTable;[我对路径进行了三次交叉检查,它们都是正确的]

    设置一个Facebook会话,如下所示

    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');