1

私のjavascriptには、通知を送信するphpページへのajax呼び出しをトリガーするクリックイベントがあります。ドキュメントではクライアント側のコードでアプリ シークレットを使用しないようにアドバイスされており、通知パラメーターにはアプリ シークレットを使用してのみ取得できるアクセス トークンが必要であるため、この方法を選択しました。

私が抱えている問題は、ログインしていても $facebook->getUser() がphpで0を返すため、後で通知を送信するために行うAPI呼び出しが機能しないことです。私のユーザーはすでにクライアント側のコードを介してログインしています。そのため、通知を送信できるように、ログインしているというメッセージを php に送信するにはどうすればよいですか。

//JS 

                            $.ajax({
                        url : "http://xxxxxo/bn/notification.php",
                        type : 'POST',
                        data: {notify: notify },
                        success : function (result) {

                                console.log(result); 

                        },
                        error : function () {
                           alert("error sending notification");
                        }
                      });//closes ajax 

//PHP

<?php
require_once(dirname(__FILE__).'/php-sdk/facebook.php') ;

$APPLICATION_ID = '1402xxxxx7';
$APPLICATION_SECRET = 'ce71d6bbxxxxx5f55a';
$fb_app_url = "http://apps.facebook.com/myAPP";

$config = array();
$config['appId'] = $APP_ID;
$config['secret'] = $APP_SECRET;
$config['cookie'] = true;

$facebook = new Facebook($config) or die('Error is here!');

$facebook = new Facebook(array(
            'appId' => $APP_ID,
            'secret' => $APP_SECRET,
            'fileUpload' => true
        ));     

$notify = $_REQUEST['notify'];

$userid = $facebook->getUser();


/*IF WE HAVE A LOGGED IN USER AND THE 'NOTIFY' REQUEST VALUE, THEN SEND THE NOTIFICATION.
BUT MY USER ID IS 0. HOW DO I GET PHP TO RECOGNIZE ME AS LOGGED IN WITHOUT HAVING TO FORCE MY USER TO LOG IN VIA PHP AFTER THEY'VE ALREADY LOGGED IN CLIENT SIDE?*/

if($userid && $notify){

    $token_url ="https://graph.facebook.com/oauth/access_token?" .
                "client_id=" . $APP_ID .
                "&client_secret=" . $APP_SECRET .
                "&grant_type=client_credentials";
$app_token = file_get_contents($token_url);
$app_token = str_replace("access_token=", "", $app_token);






$data = array(
    'href'=> 'https://apps.facebook.com/thebringernetwork/',
    'access_token'=> $app_token,
    'template'=> 'test'
);

$sendnotification = $facebook->api('/1622649653/notifications', 'post', $data);

}else{

//handle error

} 



?>
4

2 に答える 2