facebook $ facebook-> getSignedRequest ();ошибка - PullRequest
3 голосов
/ 26 мая 2011

Я пытаюсь добавить этот скрипт в мое приложение iframe на Facebook, но, похоже, он не работает:

    $signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];
// If a fan is on your page
if ($like_status) {
echo 123;
} else {
// If a non-fan is on your page
echo 456;
}

Я помещаю правильный идентификатор приложения и секретный ключ, и я звоню в facebook.php в правильном направлении. Я не получаю ошибок или предупреждений, просто сценарий не работает.

$like_status ничего не возвращает

изменился ли скрипт? есть другая версия? спасибо

редактировать. больше кода:

<?php
require 'facebook.php';
$app_id = "11549508592";
$app_secret = "d898cb58b16f2aaaaaaaaaaaaaa";
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];
echo "<br>like status = $like_status";
?>

Ответы [ 6 ]

10 голосов
/ 25 августа 2011

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

Пример: использовать http://myapp.com/myapp/index.php, вместо http://myapp.com/myapp/

3 голосов
/ 27 мая 2011

Facebook отправляет подписанный запрос на вашу страницу, когда он вызывается из Facebook.

Итак:

$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
2 голосов
/ 05 октября 2011

$_REQUEST['signed_request'] может быть пустым, если URL вашего холста (или вкладки страницы) не является окончательным и перенаправляет на какой-либо другой URL, поскольку Facebook публикует подписанный запрос только один раз.При перенаправлении опубликованное значение теряется.

Если у вас есть некоторый контроль над перенаправлением, добавьте ?signed_request=$_REQUEST['signed_request'] к перенаправленному URL (вам также может потребоваться передать другие пользовательские параметры GET)

0 голосов
/ 11 февраля 2013

К сожалению, у меня была такая же проблема.После нескольких часов попыток решить ее, я наконец создал новое приложение с точно такой же настройкой.Я обновил ключ и секрет в своем коде до новых и voilà - он работает как шарм с первой попытки.

Определенно проблема Facebook.Может быть, сброс идентификатора приложения и секрета тоже мог бы сработать, но я не пробовал сначала.

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

Не уверен, что здесь не так, но вот основная страница, на которой он будет работать.Убедитесь, что последняя версия facebook.php и base_facebook.php находится в одном каталоге.Вы можете найти sdk здесь: https://github.com/facebook/php-sdk Также не забудьте указать идентификатор и секретный код вашего приложения, где вы видите все 111111111111111

<?php 

require 'facebook.php';

$app_id ="11111111111111111";
$app_secret = "11111111111111111111111111";

$facebook = new facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));

$signed_request = $facebook->getSignedRequest();
$page_id = $signed_request["page"]["id"];
$page_admin = $signed_request["page"]["admin"];
$like_status = $signed_request["page"]["liked"];
$country = $signed_request["user"]["country"];
$locale = $signed_request["user"]["locale"];



?>

<!DOCTYPE html>  
<html lang="en">  
    <head>
    <meta charset="utf-8"/>
    <title>untiteled</title>


    <script type="text/javascript">
        window.fbAsyncInit = function() {
            FB.Canvas.setSize(); 
        }

    </script>


</head>
<body>
    <div class="wrapper">

        <?php if(!$like_status):?> 
            <div class="likearrow"><div><div></div></div></div>
            <p id="like">Click "<b>like</b>" if you want to become a fan of this app</p>
        <?php endif; ?>

        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>

    </div>

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
    appId: '111111111111111111111',
    status: true,
    cookie: true,
    xfbml: true

});
</script>       
</body>

0 голосов
/ 06 июня 2011
  • какая версия facebook php sdk?
  • проверьте access_log и error_log на вашем веб-сервере
  • у вас есть пропущенные ";"?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...