Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook授权期间的无限循环_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Php Facebook授权期间的无限循环

Php Facebook授权期间的无限循环,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我有一个简单的代码: // index.php require_once("/fb/facebook.php"); require_once("/config/config.php"); $facebook = new Facebook(array( 'appId' => $config['appId'], 'secret' => $config['secret'], 'cookie' => true )); $user = $facebook-&

我有一个简单的代码:

// index.php
require_once("/fb/facebook.php");
require_once("/config/config.php");

$facebook = new Facebook(array(
    'appId'  => $config['appId'],
    'secret' => $config['secret'],
    'cookie' => true
));

$user = $facebook->getUser();

if ($user === 0) {      

    $loginUrl = $facebook->getLoginUrl(array(
      'redirect_uri' => 'https://www.example.com/join.php'      
    ));

    echo("<script> top.location.href='" . $loginUrl . "'</script>");    
    exit;

}
else {      
    var_dump($facebook->api("/me"));    
}   
//index.php
只需要一次(“/fb/facebook.php”);
需要_一次(“/config/config.php”);
$facebook=新的facebook(数组)(
'appId'=>$config['appId'],
'secret'=>$config['secret'],
“cookie”=>true
));
$user=$facebook->getUser();
如果($user==0){
$loginUrl=$facebook->getLoginUrl(数组)(
'重定向\u uri'=>'https://www.example.com/join.php'      
));
echo(“top.location.href=”。$loginUrl。“”);
出口
}
否则{
var_dump($facebook->api(“/me”);
}   
而join.php代码是:

//join.php
require_once("/fb/facebook.php");
require_once("/config/config.php");

$facebook = new Facebook(array(
    'appId'  => $config['appId'],
    'secret' => $config['secret'],
    'cookie' => true
));

if (isset($_REQUEST['error'])) {    
    echo("<script>top.location.href='". $config['errors']['auth'] . "'</script>");
    exit;
}

echo("<script>top.location.href='". $config['url'] . "'</script>");
//join.php
只需要一次(“/fb/facebook.php”);
需要_一次(“/config/config.php”);
$facebook=新的facebook(数组)(
'appId'=>$config['appId'],
'secret'=>$config['secret'],
“cookie”=>true
));
如果(isset($_请求['error']){
echo(“top.location.href=””$config['errors']['auth'].“”);
出口
}
echo(“top.location.href=”。$config['url'].“”);
问题是,当我转到:(并且我没有登录facebook)时,应用程序会显示auth对话框(正确),但在这一步之后,它会从index.php无限循环到join.php

当我检查join.php中是否有任何错误时,您可以看到,我重定向到index.php(应用程序的主页),但在index.php中,我仍然得到
$user==0
,因此它重定向到join.php…等等(无限循环)

我怎样才能解决这种问题

多谢各位

编辑:
我使用join.php作为登录页面的回调(重定向uri)。此页面的目的是将有关用户的信息保存在数据库中,因此join.php将执行此操作,然后重定向到index.php以允许用户使用该应用程序。错误?

您需要调用
$facebook->getUser()
,以便实际处理回调数据以在
join.php
中查找访问令牌。您为什么希望用户转到join.php?fb会让未经授权的用户登录页面,然后重定向回您的应用程序,所以应该没问题,不是吗?join.php的目的是什么?什么是
$config['url]
$config['errors']['auth']?
如果成功,它似乎应该重定向。@dhirajbodichera请查看question@Yan请参见上面的编辑$config['url]是画布(),然后['errors']['auth']是一个自定义页面,当身份验证过程中出现错误时,我会显示该页面。如您所见,我检查是否设置了“error”参数,如果设置了,则显示该页面以通知用户拒绝授权。您只需将用户数据保存到
index.php中
else
条件下的数据库中即可。不需要重定向以使事情复杂化。