Далее Facebook Вход в систему Ошибки Javascript - PullRequest
1 голос
/ 16 июня 2011

Это своего рода продолжение моего предыдущего вопроса.После этого я все еще сталкиваюсь с ошибками.Я работаю над руководством по Javascript здесь .Сейчас я нахожусь в последнем сегменте кода страницы, внизу.В верхней части моей страницы у меня есть следующий код ( идентификатор приложения и секретный идентификатор определены в моем коде):

<?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']));

?>

Но теперь я получаюэти ошибки (поиск в Google ничего полезного не дал):

Опять же, мой идентификатор приложения отображается в коде ошибки правильно.

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?Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 16 июня 2011

Это означает, что $ COOKIE ['fbs '. $ App_id] не существует, это означает, что COOKIE var пуст (или не установлен)

1 голос
/ 16 июня 2011

Проверьте свои скобки. Часто простая путаница между иерархиями скобок может исправить эти неприятные ошибки.

0 голосов
/ 05 августа 2011

Почему вы не используете Facebook PHP SDK?Я сделал это так, он работает для меня, хотя и не проверяет секрет приложения:

// 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/

0 голосов
/ 27 июня 2011

Я добавил простую проверку, чтобы проверить переменную в куки. Это работает для меня.

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;
}
...