2012-12-26 68 views
1

注意:當用戶接受我的權限使用我的應用程序。我請他們接受manage_notifications「請求此資源需要用戶訪問令牌。」 Facebook圖表的通知

我很困惑。我在網上研究了這一點,似乎我得到了不合時宜的信息和錯誤的信息,我試圖通過使用facebook圖表的facebook畫布應用向用戶發送通知。以下是我如何做,而不是工作。

public function getAccessToken() { 
    $app_id = $this->settings['app_id']; 
    $app_secrete = $this->settings['app_secrete']; 
    $url = "https://graph.facebook.com/oauth/access_token?". 
      "client_id={$app_id}". 
      "&client_secret={$app_secrete}". 
      "&grant_type=client_credentials"; 
    $c = curl_init($url); 
    // necessary so CURL doesn't dump the results on your page 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($c); 
    $result = explode("=", $result); 
    curl_close ($c); 
    return $result[1]; 
} 

結果通過類似access_token=523216317ewwer235|K4A1XugBpajwrweu1K2k12jzckdU的東西。所以這就是爲什麼我爆炸代碼內的=符號。每次用戶輸入我的應用程序時,我都會調用此函數。我採取訪問代碼並將其作爲$token在下面的代碼中傳遞。

public function alertUser($userid,$token,$message="You have a notification") { 
    $inviteMessage = $message; 
    $inviteMessage = urlencode($inviteMessage); 
    $url = "https://graph.facebook.com/{$userid}/notifications?access_token={$token}&". 
    "template={$inviteMessage}&ref=notify"; 
    $c = curl_init($url); 
    // necessary so CURL doesn't dump the results on your page 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($c); 
    curl_close ($c);   
    $r = json_decode($result); 
} 

,我得到如下回應

object(stdClass) { 
    error => object(stdClass) { 
     message => 'A user access token is required to request this resource.' 
     type => 'OAuthException' 
     code => (int) 102 
    } 
} 

回答

5

您必須使用POST請求,以使通知的工作:

curl_setopt ($c, CURLOPT_POST, true);

顯然,你正在GET請求,試圖請求資源。

+0

我想你可能是對的。我猜我必須將params設置爲postData。我會試一試並更新帖子。因爲我的代碼在最近一小時內發生了很多變化。 – numerical25

+1

作品,謝謝ALOT – numerical25

相關問題