После успешного входа с помощью Facebook JS Login вызовите эту функцию testAPI().
вашJSfile.js
function testAPI() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
var json = JSON.stringify(response);
setCookie("fbresponse_"+response.id, json, 1);
facebook_response = response;
doLocalPosiive();
return;
for(var propt in response){
console.log(propt + ': ' + response[propt]);
}
});
}
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=encodeURIComponent(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
Функция testAPI преобразует ответ в строку JSON и сохранит его в файле cookie, а на вашей php-странице вы можете получить файл cookie и проанализировать signed_request (и проверить подписанный запрос с вашим действительным app_secret, который, я думаю, известен только вам) и декодировать JSONed Response, а затем безопасно делайте с ним все, что хотите, в своем php/mySQL.
PHPfile.php
<?php
function getSignedRequest($app_id){
$signed_request = $_COOKIE["fbsr_{$app_id}"];
if($signed_request){
return $signed_request;
} else {
return false;
}
}
function parseSignedRequest($signed_request, $secret){
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
//Decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if(strtoupper($data['algorithm']) !== 'HMAC-SHA256'){
error_log("Unknown Algorithm. Expected HMAC-SHA256");
return null;
}
//Verify the signed_resquest
$expeted_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if($sig !== $expeted_sig){
error_log("Bad Signed JSON signature!");
return null;
}
return $data;
}
function base64_url_decode($str){
//$str .= str_repeat("=", (4-(strlen($str)%4)));
return base64_decode(strtr($str, '-_', '+/'));
}
// Please edit the next 2 lines
$app_id = "314xxxxxxxxx990";
$app_secret = "56b5eaxxxxxxxxxxxxxxxxxxx37c799";
if($fbsr = getSignedRequest($app_id)){
$response = parseSignedRequest($fbsr, $app_secret);
if($response['user_id']){
$js_response = $_COOKIE["fbresponse_{$response['user_id']}"];
$response_array = (json_decode($js_response, true));
//you can perform your database activities here now
}
}
?>
Не забудьте изменить свои APP_ID и APP_SECRET. Я надеюсь, что вы или кто-то еще найдете это полезным.
person
KielSoft
schedule
19.01.2013