* Неверно сформированный токен доступа - но это токен, который я получаю (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 ответ
Добро пожаловать в стек переполнения!
- Что происходит, когда вы звоните
async.php
напрямую, это работает? - Что происходит, когда у вас есть сценарий
print_r()
содержание$_SESSION
это заселено?- Что делать, если вы делаете это с помощью вызова ajax и проверяете вывод через Firebug/Chrome Inspector?
Смотря на прикрепленный код (async.php
), похоже, вы неправильно передаете параметры в Facebook. Опция curl CURLOPT_POSTFIELDS
не принимает массив в качестве аргумента. Вместо этого он должен быть построен как строка запроса:
curl_setopt($ch, CURLOPT_POSTFIELDS, 'param1=value¶m2=value¶m3=value');
Для простоты я склонен сделать это вместо этого:
curl_setopt($ch, CURLOPT_POSTFIELDS, htmlspecialchars(http_build_query(array(
"param1" => 'value',
"param2" => 'value',
"param3" => 'value'
))));