我试图使用最新的php的PHP来开发我的网站的应用程序。但我总是得不到正确的会话。然后,我检查sdk文件,发现isValidRedirect()返回false。 我试图改变应用程序设置,但不适合我。 所以,伙计们,请检查附件以及哪里出错了?
我的代码如下:
// localhost / facebook / demo.php
<?php
@session_start();
// added in v4.0.0
// Skip these two lines if you're using Composer
require __DIR__ . '/autoload.php';
//require 'functions.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\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;
// init app with app id and secret
FacebookSession::setDefaultApplication( 'app_id','app_secrect' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('http://demo.localhost/facebook/demo.php/' );
$loginUrl = $helper->getLoginUrl();
echo '<hr />';
echo $loginUrl;
echo '<hr />';
try {
$session = $helper->getSessionFromRedirect();
// $request = new FacebookRequest( $session, 'GET', '/me' );
// print_r($request);
} catch( FacebookRequestException $ex ) {
echo 22;
// When Facebook returns an error
} catch( Exception $ex ) {
echo 33;
// When validation fails or other local issues
}
?>
<a href="<?php echo $helper->getLoginUrl(); ?>">Login with Facebook</a></div>
感谢。
php文件网址: demo.localhost / Facebook的/ demo.php
安全画布网址: demo.localhost / Facebook的/
网站: 网站网址: demo.localhost / Facebook的/ 移动网站网址: demo.localhost / Facebook的/
取消授权回拨网址: https://demo.localhost/facebook/
答案 0 :(得分:1)
今天我遇到了同样的问题,我注意到会话中的状态与返回状态之间的状态总是不同。
经过一些谷歌搜索,有人在另一篇文章中提到
(PHP facebook SDK 4.0 login error)函数getLoginUrl()改变状态变量值。根据该帖子和评论中的建议,您需要在$helper->getLoginUrl()
之后移动$helper->getSessionFromRedirect()
。它对我有用。
我希望这会有所帮助。