$ facebook-> getSession () возвращает null в примере кода. это нормально?

Запуск кода примера для API Facebook Я получаю нулевой объект сеанса, и я должен получить ненулевой объект, дающий комментарий в коде. Что я делаю не так?

Другими словами, в моем index.php этот фрагмент из кода примера показывает «no session», когда я перехожу на http://apps.facebook.com/my_app в своем браузере:

 <?php require './facebook.php'; // Create our Application instance. $facebook = new Facebook(array( 'appId' => '...', // actual value replaced by '...' for this post 'secret' => '...', // actual value replaced by '...' for the post 'cookie' => true, )); // We may or may not have this data based on a $_GET or $_COOKIE based session. // // If we get a session here, it means we found a correctly signed session using // the Application Secret only Facebook and the Application know. We dont know // if it is still valid until we make an API call using the session. A session // can become invalid if it has already expired (should not be getting the // session back in this case) or if the user logged out of Facebook. $session = $facebook->getSession(); if ($session) { echo "session ok"; } else { echo "no session"; } ?> 

Примечание: на моем сервере index.php и facebook.php находятся в одной папке.

Related of "$ facebook-> getSession () возвращает null в примере кода. это нормально?"

Вы связали свое приложение еще?

 if ($session) { $logoutUrl = $facebook->getLogoutUrl(); } else { $loginUrl = $facebook->getLoginUrl(); } <?php if ($me): ?> <a href="<?php echo $logoutUrl; ?>"> <img src="http://img.ruphp.com/php/cxrz4k7j.gif"> </a> <?php else: ?> <div> Using JavaScript &amp; XFBML: <fb:login-button></fb:login-button> </div> <div> Without using JavaScript &amp; XFBML: <a href="<?php echo $loginUrl; ?>"> <img src="http://img.ruphp.com/php/4li2k73z.gif"> </a> </div> <?php endif ?> 

Код, взятый из указанной вами ссылки.

Пожалуйста, проверьте сообщение № 8 на странице http://forum.developers.facebook.net/viewtopic.php?pid=267627

Это сработало для меня. Спасибо пользователю «standardcombo».

Я скопировал его здесь для вашего удобства.

  1. Перейти на страницу разработчика «Мои приложения»
  2. Выберите свое приложение и «Изменить настройки»
  3. Дополнительно> Миграции> Включить «OAuth 2.0 для холста (бета)»

Я не уверен, что вы получили ответ, но вот что я нашел, работая над этим сам. Даже если пользователь зарегистрировался в facebook, при первом попытке получить сеанс он будет равен нулю. Пример приложения, который я нашел, помещает кнопку входа в форму – если вы это сделаете, то пользователю придется нажать на кнопку, даже если они уже вошли в facebook. Они не будут запрашиваться повторно, но это дополнительное действие пользователя.

Поэтому в моем приложении и в том, что работало для нескольких других, которые я нашел на форумах, нужно просто перенаправить на URL-адрес входа. (Если вы проверяете URL-адрес, одним из его параметров является «return_session = 1».) Когда это вернется, вы получите сеанс и можете нормально работать.

Но в моем приложении, если у меня нет токена приложения, я тоже не могу получить этот сеанс, поэтому сначала должен получить токен приложения. Чтобы получить токен приложения, посмотрите превосходное описание из http://forum.developers.facebook.com/viewtopic.php?id=56789 , сообщение от динамома 7 мая 2010 года (около четвертого поста вниз).

Одна вещь, с которой я столкнулся, заключается в том, что независимо от того, где я говорю, что аутентификация является «следующей» страницей, она переходит на страницу, настроенную на холсте. Поэтому вместо трех отдельных страниц у меня только два, и URL-адрес обратного вызова холста должен обрабатывать любое состояние, в котором он находится.

Мой фактический код находится внутри рамки, поэтому он не применим напрямую; как алгоритм, это:

 landing page: if the facebook api token is not loaded, redirect to the authorization url try to load the user id // to validate that the session if the user id is not loaded, redirect to the loginurl from the facebook api // if it reaches here, then we have both an api token and a session authorization page: get authorization token // see the post for how to do that redirect back to the page configured as the canvas url 

Может быть, лучший способ, и я уверен, что кто-то более знакомый с этим, чем я, мог бы получить лучшее решение или опубликовать общий код.