Facebook应用程序无法获取会话 [英] Facebook app fails to get Session

查看:147
本文介绍了Facebook应用程序无法获取会话的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为Heroku开发一个非常基本的PHP应用程序,用于Facebook,显示非常基本的用户信息,如名称,个人资料图片,但应用程序停止在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');

使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆