Это своего рода расширение моего предыдущего вопроса. С этим несколько решены, я все еще сталкиваюсь с ошибками. Я работаю над руководством Javascript здесь . Я сейчас на последнем сегменте кода страницы, внизу. В верхней части моей страницы у меня есть следующий код ( APP ID и SECRET ID определены в моем коде):
<?php define('YOUR_APP_ID', '**APP ID**'); define('YOUR_APP_SECRET', '**SECRET ID**'); function get_facebook_cookie($app_id, $app_secret) { $args = array(); parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); ksort($args); $payload = ''; foreach ($args as $key => $value) { if ($key != 'sig') { $payload .= $key . '=' . $value; } } if (md5($payload . $app_secret) != $args['sig']) { return null; } return $args; } $cookie = get_facebook_cookie(YOUR_APP_ID, YOUR_APP_SECRET); $user = json_decode(file_get_contents( 'https://graph.facebook.com/me?access_token=' . $cookie['access_token'])); ?>
Но теперь я получаю эти ошибки (googling их не превратили ничего полезного):
Опять же, мой идентификатор приложения IS показан в коде ошибки правильно.
Notice: Undefined index: fbs_**MY APP ID** in C:\wamp\www\_header.php on line 10 Notice: Undefined index: sig in C:\wamp\www\_header.php on line 18
Возможно ли, что это может быть проблема, связанная с WAMP? Заранее спасибо.
Проверьте свои скобки. Много раз простая путаница между иерархиями кронштейнов может исправить эти неприятные ошибки.
Это означает, что $ COOKIE ['fbs '. $ App_id] не существует, это означает, что COOKIE var пуст (или не задан)
Я добавил простую проверку, чтобы проверить var в файле cookie. Это работает для меня.
function get_facebook_cookie($app_id, $application_secret) { $args = array(); if (!isset($_COOKIE['fbs_' . $app_id])) { //BOOHOO, NO COOKIE; return $args; } parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args); ksort($args); $payload = ''; foreach ($args as $key => $value) { if ($key != 'sig') { $payload .= $key . '=' . $value; } } if (md5($payload . $application_secret) != $args['sig']) { return null; } return $args; }
Почему вы не используете PHP SDK для Facebook? Я сделал это так, он работает для меня, хотя он не проверяет секрет приложения:
// Read the cookie created by the JS API $cookie = trim($_COOKIE['fbs_' . FB_APP_ID], '\\"'); parse_str($cookie, $data); // Startup the Facebook object $fb = new Facebook(array( 'appId' => FB_APP_ID, 'secret' => FB_APP_SECRET )); // Say we are using the token from the JS $fb->setAccessToken($data['access_token']); // It should work now var_dump($fb->getUser());
Обратите внимание, что $ COOKIE ['fbs '. FB_APP_ID] будет доступна только после вызова метода FB.login на JavaScript.
Также убедитесь, что вы разрешаете cookie считываться с PHP при инициализации JS API, например:
FB.init({ appId : 'YOUR APP ID', cookie : true });
Надеюсь, это помогло.
Ссылка на github PHP SDK: https://github.com/facebook/php-sdk/