我是一名PHP开发人员,我想要的是首先用户访问我的网站并使用Facebook登录进行登录然后我想将用户重定向到特定页面并获取访问令牌,然后调用Graph API来访问用户' s数据。我把它分为两步
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)获取重定向网址上的令牌详细信息,这是不完整的 任何人都可以帮助我,我怎么能得到这个细节?????
答案 0 :(得分:0)
See the following tutorial关于如何正确处理登录和会话。
要在重定向后获取令牌,您需要执行以下操作:
$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>';
}
答案 1 :(得分:0)
即使我得到同样的错误。
找到另一种在另一个页面上获取会话信息的方法。 在第一页
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);