我尝试使用最新的 PHP SDK 在我的网站上开发应用程序。 但我总是没有得到正确的会话。 然后,我检查 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/
我今天遇到了同样的问题,我注意到会话中的状态和返回的状态总是不同的。
在谷歌上搜索了几下之后,有人在另一篇文章中提到(PHP facebook SDK 4.0 登录错误)函数 getLoginUrl() 更改状态变量值。正如该帖子和评论中所建议的,您需要在$helper->getSessionFromRedirect()
之后移动$helper->getLoginUrl()
。它对我有用。
我希望这有所帮助。