У меня есть файл с именем fbmain.php, который выполняет все части аутентификации facebook. И у меня есть кнопка в файле index.php, которая передает данные в файл .php
Это всего лишь пример
//fbmain.php : do all facebook authentication parts
//index.php
<?php
include_once "fbmain.php";
?>
<form enctype="multipart/form-data" action="http://myserver/a/a.php" method="POST">
//Some codes
<input type="submit" value="Upload"/>
</form>
В файле .php я должен снова включить fbmain.php, так как здесь я делаю вызов API.
//a.php
<?php
include_once "fbmain.php";
//some codes
try{
$me = $facebook->api('/me?access_token='. $token);
print_r($me);
} catch(FacebookApiException $e){
echo "Error:" .$e;
}
?>
Это приложение отлично работает в браузере Firefox, но не работает в IE (когда пользователь нажимает кнопку «Загрузить», он перенаправляет пользователя на URL-адрес обратного вызова Canvas хоста).
Я попытался поместить приведенные ниже коды вверху каждого файла (fbmain.php, index.php, a.php). Но это все еще не работает?
Сначала я попробовал это
header('P3P: CP=HONK');
ob_start();
Тогда я попробовал это
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
ob_start();
Но в IE ничего не работает.
Кто-нибудь может мне помочь?
// файл fbmain.php
<code><?php
//header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
header('P3P: CP="CAO PSA OUR"');
ob_start();
//facebook application
//set facebook application id, secret key and api key here
$fbconfig['appid' ] = "MY_APP_ID";
$fbconfig['api' ] = "MY_API_KEY";
$fbconfig['secret'] = "MY_APP_SECRET";
//set application urls here
$fbconfig['baseUrl'] = "http://MYSERVER/uploader/index.php"; //http://thinkdiff.net/demo/newfbconnect1/iframe;
$fbconfig['appBaseUrl'] = "http://apps.facebook.com/approne"; //http://apps.facebook.com/thinkdiffdemo;
$uid = null; //facebook user id
try{
include_once "facebook.php";
}catch(Exception $o){
echo '<pre>';
print_r($o);
echo '
';
}
// Создать наш экземпляр приложения.
$ facebook = новый Facebook (массив (
'appId' => $ fbconfig ['appid'],
'secret' => $ fbconfig ['secret'],
'cookie' => правда,
));
// Аутентификация в Facebook
$ session = $ facebook-> getSession ();
$ loginUrl = $ facebook-> getLoginUrl (
массив (
'canvas' => 1,
'fbconnect' => 0,
'req_perms' => 'электронная почта, publish_stream, status_update, user_photos'
)
);
if (! $ session) {
echo " top.location.href = '$ loginUrl'; ";
выход;
}
if ($ session) {
пытаться {
$ uid = $ facebook-> getUser ();
// Имеет проблему с загрузкой
} catch (FacebookApiException $ e) {
echo " top.location.href = '$ loginUrl'; ";
выход;
}
}
$ Sign_request = $ _REQUEST ['Sign_request'];
$ secret = $ fbconfig ['secret'];
$ data = parse_signed_request ($ signature_request, $ secret);
$ fan_page_id = $ data ['page'] ['id'];
$ admin_check = $ data ['page'] ['admin'];
// Получить идентификатор страницы поклонника
function parse_signed_request ($ signature_request, $ secret) {
list ($ encoded_sig, $ payload) = взорваться ('.', $ signature_request, 2);
// декодируем данные
$ sig = base64_url_decode ($ encoded_sig);
$ data = json_decode (base64_url_decode ($ payload), true);
if (strtoupper ($ data ['алгоритм'])! == 'HMAC-SHA256') {
error_log («Неизвестный алгоритм. Ожидаемый HMAC-SHA256»);
вернуть ноль;
}
// проверка подписи
$ Ожидаемый_сиг = hash_hmac ('sha256', $ полезная нагрузка, $ secret, $ raw = true);
if ($ sig! == $ Ожидаемый_сиг) {
error_log ('подпись JSON с плохой подписью!');
вернуть ноль;
}
вернуть $ data;
}
function base64_url_decode ($ input) {
возвращать base64_decode (strtr ($ input, '-_', '+ /'));
}
?>