* Неверно сформированный токен доступа - но это токен, который я получаю (PHP)

У меня эта проблема с моим FB-приложением

у меня есть 2 файла.. 1) mainApp.php .. и.. 2) asyncApp.php .. (который обрабатывает данные, доставляет контент и дерьмо..)

и сейчас..

  • когда пользователь входит в систему, все работает нормально.. я получаю токен доступа и сохраняю его в SESSION-Var..(здесь обрабатывается только mainApp.php).. но..

  • когда я вызываю async.php через jquery.load(), например.. я всегда получаю {"error":{"message":"маркер неверного доступа.. oO

но токен тот же, что я получаю от FB в mainApp.php ..:(

mainApp: таким образом я получаю токен..

if(isset($_GET["code"])) {
                $code = $_GET["code"];    
                $url = 'https://graph.facebook.com/oauth/access_token?client_id='.$appID.'&redirect_uri='.urlencode($appRedirectURI).'&client_secret='.$appSecret.'&code='.$code;
                $curl_handle=curl_init();                   
                curl_setopt($curl_handle,CURLOPT_URL,$url);
                curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,6);
                curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
                $buffer = curl_exec($curl_handle);                  
                curl_close($curl_handle); 

                if(strpos($buffer, 'access_token=') === 0) {                        
                    //if you requested offline acces save this token to db for use later                        
                    $token = str_replace('access_token=', '', $buffer);
                    $_SESSION['fbToken'] = $token;                                          

позже я вызываю async.php, который должен сделать ленту на стене пользователя.

$attachment =  array(
                        'access_token' => $_SESSION['fbToken'],
                        'message' => 'dfdfdf',
                        'name' => 'sdfdsf',
                        'link' => 'http://www.mbla.de',
                        'description' => 'sdfdsf',
                        'picture'=> '',
                        'actions' => json_encode(array('name' => $action_name,'link' => $action_link))
                        );

                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/me/feed');
                        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                        curl_setopt($ch, CURLOPT_POST, true);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //to suppress the curl output 
                        $result = curl_exec($ch);
                        curl_close ($ch);

было бы хорошо, если бы кто-то мог помочь мне.. я страдаю уже почти 2 недели..:(

1 ответ

Добро пожаловать в стек переполнения!


  1. Что происходит, когда вы звоните async.php напрямую, это работает?
  2. Что происходит, когда у вас есть сценарий print_r() содержание $_SESSIONэто заселено?
    • Что делать, если вы делаете это с помощью вызова ajax и проверяете вывод через Firebug/Chrome Inspector?

Смотря на прикрепленный код (async.php), похоже, вы неправильно передаете параметры в Facebook. Опция curl CURLOPT_POSTFIELDS не принимает массив в качестве аргумента. Вместо этого он должен быть построен как строка запроса:

curl_setopt($ch, CURLOPT_POSTFIELDS, 'param1=value&param2=value&param3=value');

Для простоты я склонен сделать это вместо этого:

curl_setopt($ch, CURLOPT_POSTFIELDS, htmlspecialchars(http_build_query(array(
    "param1" => 'value',
    "param2" => 'value',
    "param3" => 'value'
))));
Другие вопросы по тегам