Как отключить приложение facebook iframe за пределами facebook

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

Я не могу использовать реферер, потому что какой-то пользователь отключил его в своем браузере...


person poldixd    schedule 22.06.2011    source источник


Ответы (2)


Вы можете проверить, отправлен ли в запросе параметр signed_request. Если приложение открыто внутри facebook, то signed_request существует.

Но есть еще одна проблема.
Вы должны проверить, является ли подписанный_запрос допустимым, и для этого вы можете использовать метод parse_signed_request.

публичная функция parse_signed_request($signed_request, $secret) { список($encoded_sig, $payload) = взорвать('.', $signed_request, 2);

    // decode the data
    $sig = $this->base64_url_decode($encoded_sig);
    $data = json_decode($this->base64_url_decode($payload), true);

    if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
        error_log('Unknown algorithm. Expected HMAC-SHA256');
        return null;
    }

    // check sig
    $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
    if ($sig !== $expected_sig) {
        error_log('Bad Signed JSON signature!');
        return null;
    }

    return $data;
}

Затем вы можете проверить, существуют ли $data['user_id'] или они равны зарегистрированному пользователю. Если нет, вы можете перенаправить следующим образом
echo "‹ script type='text/javascript' >top.location.href = '$this->loginUrl'; ‹ /script >"; Или найдите способ перенаправить с php. (В старом php sdk был метод перенаправления)

person Aleksandar    schedule 11.07.2011

Ваш единственный реальный вариант — попытаться каким-то образом использовать Facebook API и посмотреть, получите ли вы какой-либо ответ.

person Andrea    schedule 22.06.2011