我正在使用PHP Facebook SDK(v.3.1.1)来构建我的Facebook应用程序。 在我的流程中的某个时刻,我需要用户接受我的应用程序。我正在使用以下代码:
// Is there an error? Redirect to explain permissions page
if(!empty($_GET['error'])) {
$redirectUrl = APP_FACEBOOK_PAGE;
require_once(ABSOLUTE_DOCUMENTROOT_PATH.'do_redirect.inc.php');
die();
}
// Prepare app
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
'cookie'=> true
));
$facebookId = $facebook->getUser();
// Changed user?
if((!empty($_SESSION['facebookAuth']['facebookId']) && $_SESSION['facebookAuth'] ['facebookId'] != $facebookId)) {
$facebook->setAccessToken('');
$_SESSION['facebookAuth']['facebookId'] = $facebookId;
$redirectUrl = getRequestPermissionsUrl($facebook);
require_once(ABSOLUTE_DOCUMENTROOT_PATH.'do_redirect.inc.php');
die();
}
// No access token? Re-acquire it!
if($facebook->getAccessToken() == '') {
$redirectUrl = getRequestPermissionsUrl($facebook);
require_once(ABSOLUTE_DOCUMENTROOT_PATH.'do_redirect.inc.php');
die();
}
// Let's see if we have an active session
if(!empty($_SESSION['facebookAuth']['facebookId']) && !empty($_SESSION['facebookAuth'] ['facebookUserObject'])){
$facebookId = $_SESSION['facebookAuth']['facebookId'];
$facebookUserObject = $_SESSION['facebookAuth']['facebookUserObject'];
}else{
$facebookId = $facebook->getUser();
if ($facebookId) {
try {
$facebookUserObject = $facebook->api('/me');
// Put them in session so we can re-use them
$_SESSION['facebookAuth']['facebookId'] = $facebookId;
$_SESSION['facebookAuth']['facebookUserObject'] = $facebookUserObject;
} catch (FacebookApiException $e) {
error_log($e);
}
}
}
// If no facebookId -> check permissions anyway
if(empty($facebookId)) {
$redirectUrl = getRequestPermissionsUrl($facebook);
require_once(ABSOLUTE_DOCUMENTROOT_PATH.'do_redirect.inc.php');
die();
}
我的函数'getRequestPermissionsUrl'调用getLoginUrl:
return $redirectUrl = $facebookObject->getLoginUrl(array('canvas'=>1,'fbconnect'=>0,'redirect_uri'=>$returnUrl,'scope'=>'publish_stream,email,user_likes'));
文件'do_redirect.inc.php'执行js-redirect:
top.location.href = '$redirectUrl';
所以,考虑到这一点,让我们来看看第一部分。 在用户拒绝权限并重新加载页面后,将再次包含此代码。在这种情况下,$ _GET ['error']被填充,我们将被重定向到应用程序中的另一个php文件 - 一个不包含我发布的代码但与权限或内容无关的文件。在那个其他文件是一个指向再次需要权限的页面的链接 - 上面的代码再次加载但是在尝试请求权限时我收到错误'出了问题,我们正试图在Facebook页面上修复它'
我已经尝试过从破坏会话到将resstoken为空设置为......你的名字。我现在完全没有想法,所以如果你们中的某些人有任何建议,我会很高兴。任何帮助将不胜感激。
提前致谢!
答案 0 :(得分:0)
我刚看到一个问题相同的新问题 - Sorry, something went wrong after cancel application connexion on SDK 3.0
Facebook的错误跟踪器中有currently open bug关于此