图形api通知返回空数据


graph api notifications returns empty data

im正在构建一个facebook应用程序,我想通知用户

https://developers.facebook.com/docs/games/notifications

im使用facebookphp-sdk





我的工作:

用户验证应用程序并接受权限

我得到的accesstoken如下:

$facebook->getAccessToken()

然后我生成一个长时间的令牌,比如:

public function generateLongTimeToken($token){
    $long_time_token_req_body = array(
        "grant_type"=>"fb_exchange_token",
        "client_id"=>$this->facebookOptions["appId"],
        "client_secret"=>$this->facebookOptions["secret"],
        "fb_exchange_token"=>$token
    );
    $query = http_build_query($long_time_token_req_body);
    $lttreq = file_get_contents("https://graph.facebook.com/oauth/access_token?".$query);
    $lttresp = parse_str($lttreq, $output);
    if ( array_key_exists("access_token", $output)){
        $this->logger->info("Facebook-app: Successfuly generated long_time_token");
        return $output["access_token"];      
    }else {
        $this->logger->err("Facebook-app: generating oauth long_time_token failed 'n".$lttreq);
        return false;
    }
} 

稍后,我将这个令牌用于后台进程,并将其张贴在用户墙上,它们都能很好地进行

现在我还想这样通知用户:

public function notifyUser($message,$facebookClientId,$token){
    $appsecret_proof= hash_hmac('sha256', $token, $this->facebookOptions["secret"]); 
    $req_body = array(
        "access_token"=>$token,
        "appsecret_proof"=>$appsecret_proof,
        "href"=>"/index",
        "template"=>$message,
        "ref"=>"post"
    );
    $query = http_build_query($req_body);
    $url = "https://graph.facebook.com/".$facebookClientId."/notifications?".$query;
    $lttreq = file_get_contents($url);

    return $lttreq;

}



但当我试图通知用户时,我总是得到空数据当我在浏览器中打开所有参数的url时,facebook返回相同的

{  
  data: [ ]
}

所以我不知道发生了什么,当我查看so时,我只发现有人在网站上发帖,但我想通知用户自己

感谢您的帮助

首先,从Facebook文档:

目前,只有Facebook.com上的应用程序可以使用应用程序通知。通知仅出现在的桌面版本上Facebook.com.

此外,需要应用程序令牌,而不是用户令牌。

顺便说一句,file_get_contents非常糟糕,对Facebook使用CURL。这可能是它不起作用的另一个原因。将CURL与Facebook API一起使用的基本示例:http://www.devils-heaven.com/extended-page-access-tokens-curl/

附加信息:我最近写了一篇关于应用通知的博客文章,它是德语的,但小代码部分可能对你来说很有趣:http://blog.limesoda.com/2014/08/app-notifications-facebook-apps/