已达到Facebook应用程序请求限制(#4)

Facebook Application request limit reached (#4)

本文关键字:请求 Facebook 应用程序      更新时间:2023-09-26

我正在尝试在网站上制作"社交墙",所以我使用Facebook API为指定的Facebook页面获取一些帖子。我没有使用任何Facebook SDK,我只是用URL进行cURL调用。

为了检索帖子,我使用Javascript。使用Ajax命令,我调用一个PHP文件,该文件对Facebook进行cURL调用。

当我在我的电脑中使用local时,一切都很好,我得到了所有的元素。

但是当我把我的代码放到网上时,我有这个错误

OAuthException (#4) Application request limit reached

我到处搜索,并试图将元素放在localStorage变量中。同样,在本地,我正确地获得了所有元素。但当我在线测试时,即使在第一次API调用时,我也会在控制台中再次出现此错误。。。

我只是向Facebook请求20条帖子:

  • 我检索页面提要(https://graph.facebook.com/myPageID/posts?limit=20&access_token=myToken)
  • 使用Javascript,我解析这个提要,使用每个ID,我都会调用以获取如下详细信息:https://graph.facebook.com/myPostID?access_token=myToken
  • 然后我有了帖子的详细信息,我会为每一篇帖子打另一个电话,以获得添加以下内容的图片:/myPostID?fields=full_picture&access_token=myToken

所以,如果我是对的,1个呼叫订阅源,20个呼叫帖子,20个调用图片。只打了41个电话。

我该怎么做才能让它正常工作?

编辑:

这是我的CURL代码:

如果令牌错误,则启动getToken一次。

getFeed启动一次以获取提要。

getPost和getPicture分别启动20次。

function fetchUrl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    // You may need to add the line below
    // curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    $feedData = curl_exec($ch);
    curl_close($ch); 
    return $feedData;
}
// Génère le token lié à l'appli fb
function facebook_getToken(){
    global $FB_token, $FB_app_id, $FB_app_secret;
    $FB_token = fetchUrl("https://graph.facebook.com/oauth/access_token?client_id=" . $FB_app_id . "&client_secret=" . $FB_app_secret . "&grant_type=client_credentials");
    $FB_token = substr($FB_token, 13);
}
// Récupère les derniers posts de la page fb
function facebook_getFeed($pageID){
    global $FB_token;
    $json_object = fetchUrl("https://graph.facebook.com/" . $pageID . "/posts?limit=20&access_token=" . $FB_token);
    $json_decoded = json_decode($json_object);
    if(array_key_exists("error", $json_decoded)){
        if($json_decoded->{'error'}->{'message'} == "Invalid OAuth access token signature."){
            $_POST["a_t"] = null;
            return null;
        }
    }
    else{
        $json_object = substr($json_object, 0, -1);
        $json_object = $json_object . ", '"access_token'": '"" . $FB_token . "'"}";
        return $json_object;
    }
}
// Récupère les informations du post fb souhaité
function facebook_getPost($postID){
    global $FB_token;
    $thePost = fetchUrl("https://graph.facebook.com/" . $postID . "?access_token=" . $FB_token);
    return $thePost;
}
// Récupère l'image du post fb en paramètre
function facebook_getPicture($postID){
    global $FB_token;
    $thePicture = fetchUrl("https://graph.facebook.com/" . $postID . "?fields=full_picture&access_token=" . $FB_token);
    return $thePicture;
}

我不太清楚你在做什么。您可以通过检索帖子的所有详细信息

/{page_id}/posts?limit=20&fields=id,message,full_picture

其中CCD_ 1是现有页面的数字id。你可以跳过20个帖子请求和20个完整图片请求。

看看

  • https://developers.facebook.com/docs/graph-api/using-graph-api#reading
  • https://developers.facebook.com/docs/graph-api/reference/page/#Reading