Intereting Posts
Как заставить его запустить команду `exec ()` в PHP для редактирования некоторого файла в Mac OS X? Браузер: Cookie потерян при обновлении Использование почты PHP из нескольких почтовых клиентов (Yahoo | Google | Hotmail | Rediff | Личный почтовый домен) Чтение метаданных PDF в PHP Как отправить форму ajax в symfony2? Распознаваемые числа с использованием PHP Таблица Symfony2 с 3 объектами в Twig Codeigniter: невозможно подключиться к серверу базы данных, используя предоставленные настройки ошибка с oci_fetch_array, может извлекать данные из oracle по php Как предоставить PHP доступ на запись в каталог? Регулярное выражение для соответствия тегу HTML <p> с использованием PHP Сопоставьте только буквы и специальные символы с RegExp PHPStorm: правильный PHPDoc для коллекции объектов? PHP Предупреждение: сеанс активен. Вы не можете изменить настройки ini-модуля сеанса в это время в /../ Преобразование boolean в целочисленное значение php

Вкладка приложения Facebook -> Внешнее связывание с PHP

В настоящее время у меня есть приложение на вкладке Facebook, и мне интересно, есть ли способ для меня глубоко связать элемент с этой вкладкой приложения. Пример:

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

Возможно ли это на вкладке «Приложение»? Я знаю, что на холсте я мог бы глубоко увязать … но ища способ сделать это на вкладке App.

Спасибо за ваши мысли и ответы.

Вот как мы глубоко связываемся с подстраницами на вкладке «Вкладка» приложения.

Когда ваше приложение будет app_data Страница», Facebook будет лишать все параметры GET, кроме app_data . Он передает app_data внутри параметра signed_request данных POST.

Дополнительная информация в документах: https://developers.facebook.com/docs/authentication/signed_request/

Поэтому, когда мы создаем ссылки на подстраницы, это будет выглядеть примерно так:

 http://www.facebook.com/myfanpage?sk=app_XXXXXX&app_data=%2Fmainpage%2Fsubpage 

Затем, в нашем индексном коде страницы, мы проверяем параметр app_data . Если он существует, то простое перенаправление 302 делает трюк.

 $request = parse_signed_request($_POST['signed_request']); if ($request['app_data']) { header('HTTP/1.1 302 Found'); header('Location: {$request['app_data']}'); exit; } 

Примечание. Вы можете передать более одного параметра внутри app_data с помощью URL-кодированного JSON-массива или чего-то подобного.

Может быть.

Для страниц холста приложений Facebook пересылает любую дополнительную информацию URI на ваш обратный вызов.

Например, если ваша страница вашего приложения – http://apps.facebook.com/testapp

и обратный вызов вашего холста – http://facebook.example.com/testapp/canvas

Затем переход на http://apps.facebook.com/testapp/foo?bar=baz приведет к тому, что серверы facebook нанесут вам так, как http://facebook.example.com/testapp/canvas/foo?bar=baz .

Я никогда не тестировал его, чтобы увидеть, поддерживают ли вкладки приложений такое поведение, но это стоит того. Если это так, вы можете просто использовать информацию URI, чтобы управлять дефолтированием.

Кроме того, вы должны знать о предстоящих изменениях на вкладках приложений.

Для тех, кому нужен полный (хотя и минимальный рабочий) пример (например, я), вот index.php, который делает глубокую связь, когда это необходимо. Убедитесь, что вы загрузили PHP SDK для Facebook и что вам require точки маршрута. (Очевидно, вам также нужно заменить $app_id и $app_secret своей собственной информацией о приложении.)

 <?php require 'facebook-php-sdk/src/facebook.php'; $app_id = "YOUR_APP_ID_HERE"; $app_secret = "YOUR_APP_SECRET_ID_HERE"; $facebook = new Facebook(array( 'appId' => $app_id, 'secret' => $app_secret )); $signed_request = $facebook->getSignedRequest(); // Get app_data from signed request POST $app_data = $signed_request["app_data"]; // Parse app_data & Re-direct if ($app_data) { header("HTTP/1.1 302 Found"); header("Location: {$app_data}"); exit; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Title Here</title> </head> <body> <h1>Landing Page</h1> </body> </html> 

Кроме того, убедитесь, что в настройках вашего приложения FB все URL-пути (то есть URL холста, URL-адрес страницы и т. Д.) Заканчиваются обратным слэшем, иначе вы получите 301 ошибку переадресации.

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

 http://www.facebook.com/pages/MYFANPAGE/XXXXX?sk=app_XXXXX&app_data=sub/another.php 

Возможно, вам придется проанализировать фактическое значение app_data перед его использованием, но для меня это работает так же, как указано выше.

Надежда, которая помогает другим. Конечно, Facebook может изменить все это в любое время.

До сих пор мы не смогли глубоко привязать к вкладке приложения с использованием параметров URL.

Мы можем извлекать информацию о window.location со страницы приложения (например, http://apps.facebook.com/testapp/foo?bar=bar )

Это не работает на вкладке приложения (например, http://www.facebook.com/testpage?v=app_1234&bar=bar )

Точно так же мы не можем использовать $_GET['foo'] чтобы попытаться захватить его на стороне сервера, если мы находимся на вкладке Facebook.

Если кому-то удалось обойти это, я бы хотел узнать это решение.