2010-04-30 5 views
5

Salut. J'ai été chargé de faire un jeu sur Facebook, mais je suis nouveau sur le développement de Facebook, donc je ne fais que commencer. Excuses d'avance si c'est une évidence pour les gens. J'ai des difficultés à suivre tous les exemples que je vois sur les sites, et je continue à courir dans les pages manquantes dans la documentation de Facebook quand j'essaie de lire. I pense c'est parce qu'il y a une nouvelle version de la bibliothèque du client PHP pour Facebook, et tout ce que je trouve se réfère à l'ancien client.Comment puis-je obtenir la fonctionnalité require_login() en utilisant la nouvelle bibliothèque client PHP pour Facebook?

Par exemple, je vois ce code dans beaucoup d'exemples:

require 'facebook.php'; 
$facebook = new Facebook(array('appId' => '(id)', 'secret' => '(secret)')); 
$facebook_account = $facebook->require_login(); 

... mais il n'y a pas "require_login()" dans la bibliothèque client fourni dans le fichier facebook.php. D'après ce que je peux dire, il semble que Facebook ait récemment déployé un nouveau système de développement, mais je ne vois aucun code pour le traiter. La nouvelle bibliothèque est accompagnée d'un fichier "example.php", mais il semble que ce soit uniquement pour ajouter la fonctionnalité "Se connecter avec Facebook" à d'autres sites (ce que je suppose être ce qu'ils entendent par "sites Facebook Connect"), pour simplement exécuter des applications dans une page Canvas sur Facebook lui-même. Plus précisément, ce que je dois faire est de permettre aux utilisateurs de visiter une page d'application sur Facebook, de faire apparaître la boîte de dialogue leur permettant d'autoriser l'application, de l'afficher dans leur page "jeux", et de l'avoir transmettez-moi les informations pertinentes sur l'utilisateur afin que je puisse commencer à créer le jeu. Mais je n'arrive pas à trouver des tutoriels ou des exemples qui montrent comment faire cela en utilisant la nouvelle bibliothèque. On dirait que cela devrait être assez simple, mais je me heurte à des barrages routiers. Ou est-ce qu'il me manque quelque chose à propos de la bibliothèque cliente PHP? Est-ce que require_login() devrait fonctionner pour moi, et il y a quelque chose de cassé dans mon implémentation, comme avoir une mauvaise bibliothèque client ou autre chose? J'ai téléchargé depuis GitHub hier, donc je suis sûr que j'ai la version la plus récente du code que j'ai, mais peut-être que je télécharge le mauvais fichier "facebook.php" ...?

Répondre

4

Voici une réécriture de l'ancienne fonction require_login. Il reproduit exactement l'ancienne fonctionnalité.

function facebook_require_login($required_permissions = '') 
{ 
    global $facebook; // NOTE GLOBAL FACEBOOK OBJECT, MUST ALREADY BE INSTANTIATED 

    $user = $facebook->get_loggedin_user(); 
    $has_permissions = true; 

    if ($required_permissions) { 
    $facebook->require_frame(); 
    $permissions = array_map('trim', explode(',', $required_permissions)); 
    foreach ($permissions as $permission) { 
     if (!in_array($permission, $facebook->ext_perms)) { 
     $has_permissions = false; 
     break; 
     } 
    } 
    } 

    if ($user && $has_permissions) return $user; 

    $facebook->redirect(
    $facebook->get_login_url(Facebook::current_url(), $facebook->in_frame(), 
         $required_permissions)); 
} 
+0

Merci. Maintenant, j'ai deux routes à suivre. –

+0

Je viens de mettre en application celui-ci. Alors que celui de phpfour a également fonctionné, celui-ci était le remplacement direct. Merci, Dustin. –

+0

Accepter sans critique? – defines

0

Le nouveau script php sur git hub est un wrapper pour facebooks api, je suppose que le graphique, mais j'ai vu le code pour fql trop, donc qui sait. Les forums sont actuellement en panne et IRC était mort quand je suis allé à travers. J'ai cherché la même solution que votre autorisation d'appeler -> api (\ me). Puisque le script étend une autre classe si je me souviens bien, vous pourriez essayer d'utiliser la classe/fonction de réflexion pour voir quelles méthodes sont disponibles. Espérons que de la documentation solide est en route! S'il vous plaît laissez-moi savoir si vous résolvez ceci. (Désolé pour un mauvais formatage je suis sur mon mobile)

+0

Merci pour vos commentaires. Je trouve que développer une application Facebook, quelque chose qui semble assez simple, est un processus compliqué. Le manque d'exemples clairs ne fait qu'ajouter à la confusion. –

0

Eh bien, j'ai été capable de trouver une solution au problème d'autoriser l'application en utilisant le nouveau SDK PHP. Vous pouvez consulter mon article de blog here. En bref, vous devrez obtenir une session authentifiée, puis vous pourrez appeler les fonctions pour obtenir l'ID de l'utilisateur connecté. Dans ce cas, vous appelez le chemin "/ me" depuis l'API graphique.

+0

Cela ressemble à l'info que je cherchais. Je vais l'essayer et voir si cela m'amène où je dois être. Merci d'avoir pris le temps d'envoyer ce post! –

+0

Mon plaisir - j'ai été coincé pendant 2 jours avec !! –

1

solution phpfour est la seule correcte une - car il utilise la nouvelle bibliothèque php-sdk de GitHub.

La meilleure solution est d'éditer le nouveau facebook.php et ajouter une fonction require_login() (donc toutes les pages existantes qui en dépendent peuvent rester les mêmes)

public function require_login(){ 
    if (!$this->getSession()) { 
    $url = $this->getLoginUrl(array(
     'canvas' => 1, 
     'fbconnect' => 0 
    )); 
    echo "<script type='text/javascript'>top.location.href = '$url';</script>"; 
    } 
else 
    return $this->getUser(); 
} 
Questions connexes