Аутентификация в Facebook с помощью codeigniter (токен доступа должен ...) - PullRequest
0 голосов
/ 03 июня 2011

Я вхожу в FB, если создаю страницу напрямую на domain.com/someurl.php В тот момент, когда я копирую тот же код (включая html) в файл представления с codeigniter и захожу на domain.com/login/someurl.html, он не работает. Под этим не работает, я имею в виду, я получаю исключение, если я пытаюсь получить доступ / меня после входа в Facebook.

Сообщение гласит: «Активный токен доступа должен использоваться для запроса информации о текущем пользователе» ... В моем контроллере у меня есть функция индексации, и все, что она делает, это загружает представление с помощью кода входа в Facebook.

Мне показалось, что я что-то делаю не так, но я скопировал sample.php из SDK facebook и вставил его в файл представления, и произошло то же самое. Если я скопирую пример кода в файл someurl.php, он будет работать как положено ... учитывая ситуацию, в которой я подозревал, что это может быть связано с codeigniter и, возможно, с каким-то параметром конфигурации, который у меня вызывает такое поведение ...

Я уже давно искал ошибку и нашел несколько ресурсов: http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

Facebook access_token недействителен?

Проблема аутентификации Facebook

https://github.com/facebook/php-sdk/wiki/AccessToken но ни одно из предложенных исправлений не сработало.

справа от образца:

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'APPID',
  'secret' => 'SHHHH',
));

// Get User ID
$user = $facebook->getUser();

// We may or may not have this data based on whether the user is logged in.
//
// If we have a $user id here, it means we know the user is logged into
// Facebook, but we don't know if the access token is valid. An access
// token is invalid if the user logged out of Facebook.

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}

Это не работает в представлении, и я озадачен тем, почему или почему ни одно из исправлений или «мер предосторожности», таких как не использование type или обеспечение того, что URL-адрес перенаправления одинаков и т. Д., Не работает.

EDIT: Я пытаюсь избежать использования domain.com/somefile.php и вместо этого использую файл представления, как и любую другую страницу ...

1 Ответ

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

Эта проблема возникла в других местах, таких как библиотека Elliot Houghin fb / CI. Я нашел решение, задокументированное в руководстве, здесь:

http://www.dannyherran.com/2011/02/facebook-php-sdk-and-codeigniter-for-basic-user-authentication/

Проблема может быть вызвана одной из нескольких проблем, указанных в проблеме репозитория Эллиота на github. Я перепробовал многие из предложенных «исправлений», но тот, который, казалось, помог, не использовал экземпляр facebook в качестве свойства класса. Попробовав учебник по приведенной выше ссылке, я снова попробовал новую установку CI и создал внутри функции экземпляр facebook, после чего сработали вызовы API с помощью FB SDK, и проблем пока не было. Отчет об ошибках с предлагаемыми исправлениями @

https://github.com/elliothaughin/codeigniter-facebook/issues/5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...