我正在尝试使用最新的 php 版本 (facebook-php-sdk-v4) 为我的网站设置一个登录 facebook 选项,但浏览器一直出现此错误:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in
/home/.../src/Facebook/FacebookSession.php on line 89
正如您应该知道的那样,代码 (FacebookSession.php) 是我尝试实现的 PHP SDK V4 版本的一部分。 ( https://developers.facebook.com/docs/php/gettingstarted/4.0.0 )
这是报告错误的文件部分(我什至将其包含在我的脚本中,但我得到了相同的结果):
$me = (new FacebookRequest(
$session, 'GET', '/me'
))->execute()->getGraphObject(GraphUser::className());
这是我放在我网站的 index.php 中的完整代码:
<?php
require_once( 'src/Facebook/FacebookSession.php' );
require_once( 'src/Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'src/Facebook/FacebookRequest.php' );
require_once( 'src/Facebook/FacebookResponse.php' );
require_once( 'src/Facebook/FacebookSDKException.php' );
require_once( 'src/Facebook/FacebookRequestException.php' );
require_once( 'src/Facebook/FacebookAuthorizationException.php' );
require_once( 'src/Facebook/GraphObject.php' );
use src\Facebook\FacebookSession;
use src\Facebook\FacebookRedirectLoginHelper;
use src\Facebook\FacebookRequest;
use src\Facebook\FacebookResponse;
use src\Facebook\FacebookSDKException;
use src\Facebook\FacebookRequestException;
use src\Facebook\FacebookAuthorizationException;
use src\Facebook\GraphObject;
// start session
session_start();
// init app with app id and secret
FacebookSession::setDefaultApplication( 'xxxxxxxxxxxx','xxxxxxxxxxxxxxxxxxxxxxxxxxx' );
$helper = new FacebookRedirectLoginHelper('your redirect URL here');
$loginUrl = $helper->getLoginUrl();
// Use the login url on a link or button to redirect to Facebook for authentication
$helper = new FacebookRedirectLoginHelper();
try {
$session = $helper->getSessionFromRedirect();
} catch(FacebookRequestException $ex) {
// When Facebook returns an error
} catch(\Exception $ex) {
// When validation fails or other local issues
}
if ($session) {
// Logged in
}
?>
任何指导将不胜感激。
最佳答案
在 (PHP < 5.4.0) 中运行 Facebook SDK 4.0
请从所有 facebook 页面更改链接方法,例如 FacebookSession.php 示例如下
// change this
$graphObject = (new FacebookRequest( $session, 'GET', '/me' ))->execute()->getGraphObject();
// into this
$request = new FacebookRequest( $session, 'GET', '/me' );
$response = $request->execute();
$graphObject = $response->getGraphObject();
更改链接方法后请也更改。
// change this
if (session_status() !== PHP_SESSION_ACTIVE) {
throw new FacebookSDKException(
'Session not active, could not load state.'
);
}
// into this
if(session_id() === "") {
throw new FacebookSDKException(
'Session not active, could not load state.'
);
}
关于php - 如何支持使用Facebook账号登录(facebook-php-sdk-v4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464856/