Facebook应用程序无法获取会话 [英] Facebook app fails to get Session
问题描述
我已经尝试过该应用程序登录我的个人资料仍然是相同的消息:
以下是代码
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');
使用Facebook\FacebookSession;
使用Facebook\FacebookRedirectLoginHelper;
使用Facebook\FacebookRequest;
使用Facebook\FacebookResponse;
使用Facebook\FacebookSDKException;
使用Facebook\FacebookRequestException;
使用Facebook\FacebookAuthorizationException;
使用Facebook\GraphObject;
使用Facebook\GraphUser;
使用Facebook\GraphSessionInfo;
FacebookSession :: setDefaultApplication($ id,$ secret);
$ helper = new FacebookRedirectLoginHelper('http://facebook.com');
try {
$ session = $ helper-> getSessionFromRedirect();
} catch(异常$ e){echo'Session'中的错误> 。 $é;
}
if(isset($ _ SESSION ['token'])){
$ session = new FacebookSession($ _ SESSION ['token']);
尝试{
$ session->验证($ id,$ secret);
} catch(FacebookAuthorizationException $ e){
echo'Token中的错误>'$ e; $ session ='';
}
}
if(isset($ session)){
$ _SESSION ['token'] = $ session-> getToken();
echo登录成功< br>;
$ request = new FacebookRequest($ session,'GET','/ me');
$ response = $ request-> execute();
$ graph = $ response-> getGraphObject(GraphUser :: className());
echo嗨。 $ graph->的getName();
}
else {
echo< a href =。 $ helper-> getLoginUrl()。 >使用Facebook登录< / a>;
}
应用程序总是转到使用Facebook登录 ,最后的其他部分!
问题出在哪里?
我完全是这个Heroku和Facebook SDK v4的新手,搜索几个小时后没有在Facebook上找到任何示例应用程序对于Heroku〜
尝试将代码更改为此,看看是否有帮助:
if(isset($ _SESSION ['token'])){
$ session = new FacebookSession($ _ SESSION ['token']);
尝试{
$ session->验证($ id,$ secret);
} catch(FacebookAuthorizationException $ e){
echo'Token中的错误>'$ e; $ session ='';
$ session = null;
}
} else {
$ session = null;
}
//如果session为空,尝试从重定向
获取($ session === null){
try {
$ session = $ helper-> getSessionFromRedirect();
} catch(异常$ e){echo'Session'中的错误> 。 $é;
}
}
如果(isset($ session)&& $ session!= null){
$ _SESSION ['token'] = $ session - >为gettoken();
echo登录成功< br>;
$ request = new FacebookRequest($ session,'GET','/ me');
$ response = $ request-> execute();
$ graph = $ response-> getGraphObject(GraphUser :: className());
echo嗨。 $ graph->的getName();
}
else {
echo< a href =。 $ helper-> getLoginUrl()。 >使用Facebook登录< / a>;
}
我使用了类似于这里显示的代码。
I'm developing a very basic PHP app on Heroku for Facebook which shows very basic user info like Name, Profile Picture, but the app halts in getToken method !
I've tried the app after logging in my profile still the same message :
Here are the codes
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>";
}
The app always goes to the Login With Facebook ,the last else part !
Where the problem lies ?
I'm completely new to this Heroku and Facebook SDK v4 and after searching for hours did not found any sample app on Facebook for Heroku ~
Try changing your code to this and see if it helps:
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>";
}
I've uses a similar method to the code shown here.
这篇关于Facebook应用程序无法获取会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!