2014-08-27 124 views
1

IM建立一個Facebook應用程序,我想通知用戶圖形API通知返回空數據

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

IM使用Facebook的PHP 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; 
    } 
} 

一些後來我使用此令牌後臺進程後的用戶牆,他們所有做工精細

現在我也想notificate這樣的用戶:

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; 


} 



但是當我嘗試通知用戶我總是得到空的數據傳回 當我在瀏覽器中的所有參數的Facebook返回相同的

{ 
    data: [ ] 
} 

打開網址,所以我不知道什麼怎麼回事,當我看到,所以我只找到人張貼到網站,但我想通知用戶本身

感謝您的幫助

+0

是你的應用程序畫布應用程序? – luschn 2014-08-27 21:17:23

+0

@luschn目前它在apache服務器上運行本地,它正在開發中,尚未發佈或審查 – 2014-08-27 21:19:30

回答

1

首先,從Facebook文檔:

目前,只有Facebook.com上的應用程序可以使用應用程序通知。 通知只在桌面版 Facebook.com上浮現。

另外,需要App Token,而不是用戶令牌。

順便說一句,file_get_contents是非常糟糕的,使用Facebook的CURL。可能是它不起作用的另一個原因。 http://www.devils-heaven.com/extended-page-access-tokens-curl/

附加信息:使用curl與Facebook的API的一個基本的例子,我最近寫了一個關於應用程序通知的博文,它是在德國,但小部分代碼可能對你很有意思:http://blog.limesoda.com/2014/08/app-notifications-facebook-apps/

+0

所以這意味着它也不會使用canvas應用程序?或者是他們「在facebook.com上」作爲畫布網址的主機是我的主機? – 2014-08-27 21:23:58

+0

它將與一個畫布應用程序> apps.facebook.com/namespace>它是在facebook.com – luschn 2014-08-27 21:24:34

+0

好,我會嘗試,非常感謝! – 2014-08-27 21:25:11