我是一个PHP开发人员,我想要的是首先用户来到我的网站,并使用Facebook登录登录,然后我想将用户重定向到特定页面,并获得访问令牌,然后调用图形API访问用户的数据。我把它分成了两个步骤
1)让用户使用Facebook登录,完成后代码如下:
include_once('facebook-php-sdk-v4-master/src/Facebook/FacebookSession.php');
include_once('facebook-php-sdk-v4-master/src/Facebook/FacebookRedirectLoginHelper.php');
require_once( 'facebook-php-sdk-v4-master/src/Facebook/FacebookRequest.php' );
require_once( 'facebook-php-sdk-v4-master/src/Facebook/FacebookResponse.php' );
require_once( 'facebook-php-sdk-v4-master/src/Facebook/FacebookSDKException.php' );
require_once( 'facebook-php-sdk-v4-master/src/Facebook/FacebookRequestException.php' );
require_once( 'facebook-php-sdk-v4-master/src/Facebook/FacebookAuthorizationException.php' );
require_once( 'facebook-php-sdk-v4-master/src/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;
session_start();
FacebookSession::setDefaultApplication('APP id', 'APP key');
$helper = new FacebookRedirectLoginHelper('http://redirect-url.com/');
$loginUrl = $helper->getLoginUrl();
echo "<a href=".$loginUrl.">FB login here</a>";
2)获取重定向URL上的令牌详细信息,这是不完整的谁能帮我怎么才能得到这个细节?????
请参阅以下教程,了解如何正确处理登录和会话。
要获得重定向后的令牌,需要执行以下操作:
$session = $helper->getSessionFromRedirect();
然后,检查会话是否有效,并根据需要重定向:
if ( isset( $session ) ) {
// user is logged in, display logout link
echo '<a href="' . $helper->getLogoutUrl( $session, 'http://yourwebsite.com/app/logout.php' ) . '">Logout</a>';
} else {
// show login url
echo '<a href="' . $helper->getLoginUrl( array( 'email', 'user_friends' ) ) . '">Login</a>';
}
我也会得到同样的错误。
找到另一个方法来获取另一个页面的会话信息。在第一页
FacebookSession::setDefaultApplication($app_id,$app_secret,$cookie);
// login helper with redirect_uri
$helper = new FacebookCanvasLoginHelper();
try {
$session = $helper->getSession();
$_SESSION['token'] = $session->getToken();
}
第二页应该是
$token = $_SESSION["token"];
$session = new FacebookSession($token);