2009-11-20 4 views
0

Je suis nouveau à développer des applications facebook.J'ai le problème suivant et je serais heureux si quelqu'un pouvait vous aider.Problème avec require_once dans une appli facebook hello world

J'ai enregistré mon application sur facebook et j'ai téléchargé le code et la bibliothèque client php sur le serveur d'hébergement. Si j'utilise le code ci-dessous, tout fonctionne bien.

<?php 

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

/* initialize the facebook API with your application API Key 
    and Secret */ 
$facebook = new Facebook("<my_api_key>","<my_secret_key>"); 

$user = $facebook->require_login(); 

echo "<p>Your User ID is: $user</p>"; 

echo "<p>Your name is: <fb:name uid=\"$user\" useyou=\"false\"/></p>"; 

echo "<p>You have several friends: </p>"; 
$friends = $facebook->api_client->friends_get(); 
echo "<ul>"; 

foreach ($friends as $friend) { 
echo "<li><fb:name uid=\"$friend\" useyou=\"false\" /></li>"; 
} 
echo "</ul>"; 

/* Echo some information that will 
    help us see what's going on with the Facebook API: */ 
echo "<pre>Debug:" . print_r($facebook,true) . "</pre>"; 


?> 

Mais, si je divise le code en deux fichiers comme suit puis-je obtenir une toile vierge lorsque je navigue à http://apps.facebook.com/myapp

appinclude.php

<?php 
require_once('./facebook/php/facebook.php'); 

/* initialize the facebook API with application API Key 
    and Secret */ 
$facebook = new Facebook("<my_api_key>","<my_secret_key>"); 

$user = $facebook->require_login(); 

?> 

index . php

<?php 

require_once('./appinclude.php'); 

echo "<p>Your User ID is: $user</p>"; 

echo "<p>Your name is: <fb:name uid=\"$user\" useyou=\"false\"/></p>"; 

echo "<p>You have several friends: </p>"; 
$friends = $facebook->api_client->friends_get(); 
echo "<ul>"; 

foreach ($friends as $friend) { 
echo "<li><fb:name uid=\"$friend\" useyou=\"false\" /></li>"; 
} 
echo "</ul>"; 

/* Echo some information that will 
    help us see what's going on with the Facebook API: */ 
echo "<pre>Debug:" . print_r($facebook,true) . "</pre>"; 

?> 

Un moyen de résoudre ce problème?

Merci.

+0

@MikeTJ, peut-être une sortie d'arbre serait éclairer pour nous. – Don

Répondre

0

Je vérifierais les chemins de fichiers.

Il semble que dans votre deuxième (version non-fonctionnelle) vous essayez d'inclure un fichier à partir d'un répertoire appelé 'facebook/php /'.

Si c'est le répertoire que vous avez spécifié comme racine de votre application, je suppose que Facebook ne vous permettra pas d'inclure des fichiers au-dessous de ce niveau de répertoire.

1

La façon dont je configure mon application est d'avoir tous les fichiers dans le même répertoire afin qu'il n'y ait pas de confusion.

/Myapp/index.php

<?php 
require_once('appinclude.php'); 
?> 

/Myapp/appinclude.php

<?php 
require_once('facebook.php'); 
?> 

Le répertoire Myapp ressemble à ceci:

/Myapp/jsonwrapper/JSON/JSON. php
/Myapp/jsonwrapper/JSON/LICENCE
/Myapp/jsonwrapper/jsonwrapper.php
/Myapp/jsonwrapper/jsonwrapper _ inner.php

/Myapp/facebook.php /Myapp/facebookapi _ php5 _ restlib.php

/Myapp/appinclude.php

/Myapp/index.php

Dans votre deuxième exemple, la mise en page devrait être comme cela fonctionne:

/facebook/php/facebook.php
/Myapp/AnotherDirectory/index.php
/Mapp/appinclude.php

Notez que appinclude.php et index.php ne se trouvent pas dans le même dossier. index.php recherche un fichier appinclude.php dans le répertoire ci-dessus, et appinclude.php cherche un fichier facebook/php/facebook.php dans le répertoire ci-dessus lui-même. Si vous deviez supprimer les points et les barres obliques à l'avant des instructions require, il les chercherait toutes dans le même répertoire. Fondamentalement ce que vous devez réaliser est que le ./ dans require_once('./appinclude.php'); dit regarder dans le répertoire ci-dessus celui-ci.