Author Avatar

Fabrizio S.

0

Share post:

Problema risolto applicazioni facebookCi occupiamo adesso  di un problema abbastanza ricorrente che ci hanno segnalato  molti sviluppatori di applicazioni facebook che ottengono valore 0 quando effettuano il login con PHP SDK in particolare il codice incriminato , che riprendiamo direttamente  dal sito di facebook.com

<?php // Remember to copy files from the SDK's src/ directory to a // directory in your application on the server, such as php-sdk/ 

require_once('php-sdk/facebook.php'); 

$config = array(

'appId' => 'YOUR_APP_ID', 'secret' => 'YOUR_APP_SECRET', ); 

$facebook = new Facebook($config); 

$user_id = $facebook->getUser(); 

?> 

<html> 

<head>

</head> 

<body> 

<?php

if($user_id) 

{ // We have a user ID, so probably a logged in user. // If not, we'll get an exception, which we handle below. try { $user_profile = $facebook->api('/me','GET'); echo "Name: " . $user_profile['name']; } 

catch(FacebookApiException $e) 

{ // If the user is logged out, you can have a // user ID even though the access token is invalid. // In this case, we'll get an exception, so we'll // just ask the user to login again here. 

$login_url = $facebook->getLoginUrl(); 

echo 'Please <a href="' . $login_url . '">login.</a>'; 

error_log($e->getType()); error_log($e->getMessage()); 

} } 

else 

{ // No user, print a link for the user to login 

$login_url = $facebook->getLoginUrl(); 

echo 'Please <a href="' . $login_url . '">login.</a>'; 

} ?> 

</body> 

</html>

 

Come risolvere il problema del login dell’applicazione Facebook

Eseguendo questo codice spesso accade , lo abbiamo testato anche noi che che otteniamo un valore di $user_id = 0 in questa maniera il ciclo if non viene eseguito e quindi l’applicazione non funziona in quanto non restituisce i valori nome e altro. Oggettivamente pare che il problema sia dovuto al fatto che alcune versioni di PHP SDK potrebbero essere incompatibili con quelle che usate nel vostro sito, oppure difendere da alcuni settaggi che impediscono il giusto funzionamento. Se vi trovate in questa situazione ovviamente facebook vi mette a disposizione una soluzione che è la seguente. Ossia per l’autenticazione della vostra applicazione facebook utilizzate questa applicazione

<?php
 require 'server/fb-php-sdk/facebook.php';
$app_id = 'APP_ID';
 $app_secret = 'APP_SECRET';
 $app_namespace = 'APP_NAMESPACE';
 $app_url = 'https://apps.facebook.com/' . $app_namespace . '/';
 $scope = 'email,publish_actions';
// Init the Facebook SDK
 $facebook = new Facebook(array(
 'appId' => $app_id,
 'secret' => $app_secret,
));
// Get the current user
$user = $facebook->getUser();
// If the user has not installed the app, redirect them to the Login Dialog
if (!$user) {
 $loginUrl = $facebook->getLoginUrl(array(
 'scope' => $scope,
 'redirect_uri' => $app_url,
 ));
print('<script> top.location.href=\'' . $loginUrl . '\'</script>');
}
?>

I due codici sono molto simili se non il fatto che l’applicazione questa volta richiede subito i permessi la prima volta e quindi non necessita di un secondo controllo , lo abbiamo testato e questo funziona. Per delucidazione contattateci pure sotto.

Interazione e passaggio di parametri fra JSDK e PHP SDK nelle applicazioni facebook
Abilitare la compressione gzip zlib su wordpess