2012-09-17 4 views
-1

J'ai fait des recherches sur le web haut et bas et je n'arrive pas à comprendre le problème auquel je suis confronté. J'ai une application de tabulation de page sur Facebook, l'utilisateur aime la page pour commencer et puis il peut répondre à quelques questions, je peux obtenir la connexion de Facebook pour fonctionner mais je ne peux pas obtenir l'identification d'utilisateur et l'enregistrer à la base de données.Get facebook user id

J'ai dans ma page d'index

<? include('db.php'); 
include_once("config.php"); 

// Finnur út hvaða spurninga sett á að nota 
$sp_set = 1; 

require_once 'facebook-php-sdk/src/facebook.php'; 
// Create our Application instance. 
$facebook = new Facebook(array('appId' => '289393321124676', 
'secret' => 'd47b7871e0a7fb475db6e2a643f675ed', 'cookie' => true,)); 
$signed_request = $facebook -> getSignedRequest(); 
$like_status = $signed_request["page"]["liked"]; 
$user = $facebook->getUser(); 

//If the page is liked then display full app. 

?> 

Et l'ID utilisateur est toujours nul, lorsque l'utilisateur soumet le tout en question est enregistré dans la base de données mais l'utilisateur est 0.

S'il vous plaît aider

+0

Ce qui est dans 'signed_request' de $? –

+0

Je pensais que cela me permettrait d'obtenir plus d'informations sur l'utilisateur ... –

+0

J'ai aussi besoin de savoir si l'utilisateur a aimé la page avant de pouvoir commencer à répondre aux questions ... –

Répondre

0

$ utilisateur = $ facebook-> getUser();

Ce sera pas vous obtenez tout nom d'utilisateur, sauf si l'utilisateur est connecté à votre première application. Par conséquent, vous devez implémenter le flux d'authentification côté client ou côté serveur dans votre application. https://developers.facebook.com/docs/authentication/pagetab/

0

Essayez cet exemple:

<?php 

    $secret = '********************************'; // App Secret 
    $app_id = '***************';     // App ID 
    $page_url = 'https://www.facebook.com/*******'; // FB fan page URL, where the application tab is installed 

    require 'src/facebook.php'; 

    $facebook = new Facebook(array(
     'appId' => $app_id, 
     'secret' => $secret, 
    )); 

    // Get User ID 
    $user = $facebook->getUser(); 

    if ($user) { 
     try { 
      // Proceed knowing you have a logged in user who's authenticated. 
      $user_profile = $facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      error_log($e); 
      $user = null; 
     } 
    } 

    // Login url will be needed depending on current user state. 
    if (!$user) { 
     $loginUrl = $facebook->getLoginUrl(array('redirect_uri' => $page_url.'?sk=app_'.$app_id)); 
    } 

    $signed_request = $facebook->getSignedRequest(); 

?><!DOCTYPE html> 
<html> 
    <body><pre> 

<?php 

    if (!$user): // isn't authorized 
     echo '<a href="'.$loginUrl.'" target="_top">Authorize app</a>'; 
    else: 
     if ($signed_request['page']['liked']): // likes 
      echo 'The page is liked by user with id '.$signed_request['user_id']; 
     else: 
      echo 'The page is <strong>NOT</strong> liked by user with id '.$signed_request['user_id']; 
     endif; 
    endif; 


?> 
    </pre></body> 
</html> 
0

J'avais un problème similaire. J'ai fini par utiliser le FB JS-SDK pour appeler la boîte de dialogue oAuth afin de permettre à l'utilisateur de se connecter à mon application et de m'accorder des autorisations. À ce stade, vous pouvez accéder à leur identifiant utilisateur et à toute autre information pour laquelle ils vous ont accordé l'autorisation.

Ajoutez le code suivant à votre appel window.fbAsyncInit:

FB.login(function(response) { 
if (response.authResponse) { 
    console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
    console.log('Good to see you, ' + response.name + '.'); 
    }); 
} else { 
    console.log('User cancelled login or did not fully authorize.'); 
} 
}); 

Source: https://developers.facebook.com/docs/reference/javascript/FB.login/