Простая аутентификация Facebook на основе Iframe

Я написал приложение facebook, но аутентификация не работает должным образом. Несмотря на несколько часов гугления, это не решилось. Пожалуйста, напишите сценарий, который правильно аутентифицирует пользователя, и если пользователь нажимает кнопку «Разрешить», просто отображайте текст «Добро пожаловать», предполагая, что я написал все основные суффиксы..

require 'sdk/src/facebook.php';
 $app_id = 'MY APP ID';
 $canvas_page = "MY CANVAS URL";

// Create our Application instance (replace this with your appId and secret).
   $auth_url = "http://www.facebook.com/dialog/oauth?client_id="
            . $app_id . "&redirect_uri=" . urlencode($canvas_page) ."&scope=email,read_stream&installed=1";
  $facebook = new Facebook(array(
  'appId'  => $app_id ,
  'secret' => MY APP SECRET,
  'cookie' => true,
));
///... your code to solve !

person Shahid Karimi    schedule 26.02.2011    source источник
comment
Вы правильно настроили все параметры URL в конфигурации вашего приложения внутри FB? Кроме того, убедитесь, что вы используете тот же URL-адрес и не пытаетесь заставить его работать с локального хоста или чего-то подобного...   -  person Manuel Pedrera    schedule 26.02.2011


Ответы (2)


Никто не предлагает окончательного решения: наконец, я решил это сам. что я делаю. Facebook отправляет параметр «installed=1» с URL-адресом, когда пользователь разрешает приложение. Поэтому я проверил этот параметр и снова перенаправил в приложение. Я очень рад найти очень хорошее и эффективное решение. Никто не ответил мне ни на один голосующий ответ.

if(isset($_REQUEST['installed']))
  echo("<script>top.href.location='http://apps.facebook/myapp' </script>");
person Shahid Karimi    schedule 28.02.2011

Похоже, вы смешиваете примеры из документации и PHP-SDK, опуская пример из PHP-SDK должен работать.

Следуя коду в этом ответе:

<?php
require '../src/facebook.php';
$facebook = new Facebook(array(
  'appId'  => 'XXXXXXX',
  'secret' => 'XXXXXXXX',
  'cookie' => true,
));

$session = $facebook->getSession();
$loginUrl = $facebook->getLoginUrl();
$me = null;

if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');

    echo "Welcome User: " . $me['name'] . "<br />";
  } catch (FacebookApiException $e) {
    error_log($e);
  }
} else {
    echo("<script> top.location.href='" . $loginUrl . "'</script>");
}
?>
person ifaour    schedule 26.02.2011
comment
Он отображал приветственное сообщение на моем веб-сайте, т.е. URL-адрес холста, а не понимание facebook iframe - person Shahid Karimi; 27.02.2011
comment
@Xcoder: Что? URL-адрес холста ЯВЛЯЕТСЯ страницей iframe внутри Facebook. - person ifaour; 27.02.2011
comment
Никто не предлагает окончательного решения: наконец, я решил это сам. что я делаю. Facebook отправляет параметр install=1 с URL-адресом, когда пользователь разрешает приложение. Си я проверил этот параметр и снова перенаправил в приложение. Я очень рад найти чрезвычайно красивое и эффективное решение. Никто не ответил мне ни на один голосующий ответ. ‹pre› if(isset($_REGUEST['installed'])) echo('‹script›top.href.location=apps.facebook/myapp‹/script›'); ‹/пред› - person Shahid Karimi; 28.02.2011
comment
Кто-то пытается проголосовать против?! пожалуйста, объясните, почему голосование против! - person ifaour; 21.03.2011