我正在为Heroku for Facebook开发一个非常基本的PHP应用程序,它显示非常基本的用户信息,如Name,Profile Picture,但应用程序在getToken方法中停止!
我在登录我的个人资料后尝试了该应用程序仍然是相同的消息:
以下是代码
composer.json
{}
index.php
session_start();
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' );
require_once( 'Facebook/GraphUser.php' );
require_once( 'Facebook/GraphSessionInfo.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;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;
FacebookSession::setDefaultApplication($id, $secret);
$helper = new FacebookRedirectLoginHelper('http://facebook.com');
try{
$session = $helper->getSessionFromRedirect();
} catch(Exception $e){ echo 'Error in Session > '.$e;
}
if(isset($_SESSION['token'])){
$session = new FacebookSession($_SESSION['token']);
try{
$session->Validate($id, $secret);
}catch(FacebookAuthorizationException $e){
echo 'Error in Token >'.$e; $session = '';
}
}
if(isset($session)){
$_SESSION['token'] = $session->getToken();
echo "Login Successful<br>";
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::className());
echo "Hi " . $graph->getName();
}
else{
echo "<a href = " . $helper->getLoginUrl() . ">Login With Facebook</a>";
}
应用程序总是进入登录Facebook ,这是最后一个部分!
问题出在哪里?
我对这个Heroku和Facebook SDK v4完全不熟悉,在搜索了几个小时之后,没有在Facebook上找到任何样本应用程序用于Heroku~
答案 0 :(得分:-1)
尝试将代码更改为此代码并查看是否有帮助:
if ( isset( $_SESSION['token'] ) ) {
$session = new FacebookSession($_SESSION['token']);
try{
$session->Validate($id, $secret);
}catch(FacebookAuthorizationException $e){
echo 'Error in Token >'.$e; $session = '';
$session = null;
}
} else {
$session = null;
}
// if session is null, try getting it from redirect
if ( $session === null ) {
try{
$session = $helper->getSessionFromRedirect();
} catch(Exception $e){ echo 'Error in Session > '.$e;
}
}
if ( isset( $session ) && $session != null ) {
$_SESSION['token'] = $session->getToken();
echo "Login Successful<br>";
$request = new FacebookRequest($session, 'GET', '/me');
$response = $request->execute();
$graph = $response->getGraphObject(GraphUser::className());
echo "Hi " . $graph->getName();
}
else{
echo "<a href = " . $helper->getLoginUrl() . ">Login With Facebook</a>";
}
我使用了与code shown here类似的方法。