Facebook SDK PHP 4.0 Login
J'essaie de Facebook se connecter avec leur nouveau SDK PHP 4.0 de travail pour mon site. J'ai suivi leur gist presque mot pour mot, et encore ne peut pas même obtenir une page de test pour le travail. Lorsque j'essaie de me connecter, j'ai redirigé vers une url de la forme:
https://www.facebook.com/v2.0/dialog/oauth?client_id={some number}&redirect_uri{localhost%2F%7E{MyName}%2F{my site}}&state=08d94ec4670256aa2b2c586781590766&sdk=php-sdk-4.0.0&scope=
J'ai rempli la même url sur mon Facebook page développeur déjà, et c'est le code que je suis en train de tester:
<?php
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
//start session
session_start();
//init app with app id and secret
FacebookSession::setDefaultApplication( '{My app ID}','{My app secret}' );
//login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('localhost/~{My Name}/{My Project}' );
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
//When Facebook returns an error
} catch( Exception $ex ) {
//When validation fails or other local issues
}
//see if we have a session
if ( isset( $session ) ) {
//graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
//get response
$graphObject = $response->getGraphObject();
//print data
echo '<pre>' . print_r( $graphObject, 1 ) . '</pre>';
} else {
//show login url
echo '<a href="' . $helper->getLoginUrl() . '">Login</a>';
}
Malheureusement, je n'ai jamais renvoyé, ou même charger la page de connexion. Que pouvais-je fait de mal ici?
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème.
Vous devez définir une URL de domaine et URL de site dans votre Facebook paramètres de l'Application en premier. Allez sur cette page pour modifier ce paramètre: https://developers.facebook.com/apps.
J'ai partagé une étape par étape ici: http://bit.ly/1iNNsBy
Vous n'avez pas à inclure les fichiers php. Facebook veut vous utiliser composer pour gérer ce qui est nécessaire.
Cependant.... ils vous donnent une solution: Inclure
autoload.php
et de garder la structure du fichier, ils vous donnent plus facile pour la mise en œuvre. Pour plus de facilité, mettez tous les fichiers à partir du SDK dans un dossier appeléfacebook
, si vous avez un sous-dossier, il y a appelésrc
et un autre appeléFacebook
Puis le SDK crée un lien que vos utilisateurs peuvent cliquer sur autoriser l'accès à votre application.
Si vous passez le test, vous avez besoin de garder la suppression de l'application à partir de votre facebook profil pour obtenir l'inscription de la fenêtre à chaque fois (
Settings
en haut à droite de liste déroulante, puisApps
sur la gauche comme de Août 2014), sinon il va rebondir directement par le biais de votre page de redirection et apparaîtra comme si rien n'a fonctionné.Notes pour vérifier:
Le script n'est pas complète. Vous devez écrire la partie où si la session n'est pas définie. Demande d'autorisation vient de rôle ici.
Comme indiqué dans le Facebook de la documentation du Développeur, vous avez besoin de PHP 5.4+.
Est-ce le code que vous utilisez?
Vous serez redirigé à partir de Facebook, de sorte que l'argument doit être une URL accessible à partir de l'Internet.
J'ai eu des problèmes lorsque vous tentez d'exécuter
La solution a été d'appeler:
avant la
sur @DigitalVisual la réponse ci-dessus.
À utiliser comme:
Devez utiliser l'URL complète.