Выполнение вызовов API Graph в приложении Tab с использованием PHP - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь создать приложение на вкладке Facebook, которое может отображать диалоговое окно с разрешениями так же, как оно будет работать на веб-сайте Facebook Connected.Я надеялся, что для приложений с вкладками, размещенных в iframe, процесс будет таким же, если не очень похожим.

Вот как я сейчас генерирую свой логин в URL:

$params = array(
    'canvas' => 1,
    'redirect_uri' => 'http://mysite.com/next_step",
    'scope' => 'email,user_about_me',
);

$login_url = $facebook->getLoginUrl( $params );

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

Когда я делаю это из размещенного в Facebook iframe, я получаю либо следующий результат:

Когда пользователь не принялпока нет разрешений, после нажатия на ссылку входа в систему, пользователь перенаправляется на страницу внутри фрейма, которая просто отображает логотип Facebook в верхнем левом углу.Нажатие на логотип выводит пользователя из iframe и отображает диалоговое окно с разрешениями.С этого момента пользователь больше не находится в iframe.

Как сделать так, чтобы все оставалось в пределах iframe, и как сделать так, чтобы страница с логотипом Facebook не отображалась?

1 Ответ

1 голос
/ 08 сентября 2011

Почему вы не используете диалог входа в систему?

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream

Вы можете узнать больше о том, как его использовать: http://developers.facebook.com/docs/authentication/

Вот пример:

Я создал приложение с AppID: 2785870588 ** 573 и URL-адрес холста: www.mysite.com

Чтобы иметь возможность запрашивать разрешения, я могу использовать ссылку выше, например:

. https://www.facebook.com/dialog/oauth?client_id=2785870588**573&redirect_uri=www.mysite.com&scope=email,read_stream

или как вы:

...    
$login_url = $facebook->getLoginUrl( $params );

(оба метода должны приводить к одному и тому же URL)

Как только я правильно сконструировал URL, я создаю HTML-ссылку. В моем коде приложения я могу использовать просто:

<a target="_top" href="https://facebook.com/dialog/oauth?
    client_id=2785870588**573&
    redirect_uri=www.mysite.com&
    scope=email,read_stream">Login</a>

Важным здесь является target="_top", который указывает Facebook загружать ссылку для входа в родительский фрейм, а не внутри вашего приложения. Таким образом, вы не получите логотип Facebook.

Вот рабочий пример, если это поможет: http://apps.facebook.com/278587058833573/

...