Facebook请求权限和身份验证


Facebook asking for permissions and authentication

我目前正在制作一个facebook应用程序,并且在权限方面遇到了一些问题。我需要每个用户的许可才能使用那里的位置和那里的朋友位置。我以前处理过的代码,但最近似乎已经停止工作了。假设我的app_id和app_namespace已经声明。所发生的一切是,我被重定向到if(empty($code))块中的dialog_url,但据我所知,$code不应该是空的。如有任何帮助,我们将不胜感激。谢谢

require_once('sdk/src/facebook.php');
 require_once('AppInfo.php');
 require_once('utils.php');
 require_once('connection.php');
 $facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
 ));
 $user_id = $facebook->getUser();
       if(user has ran the app before)
    {

        mysql_close($connection);
        session_start();
        $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
        $dialog_url = "http://www.facebook.com/dialog/oauth?client_id"
        . $app_id . "&redirect_uri=" . urlencode($my_url2) . "&state="
        . $_SESSION['state'];
        echo("<script> top.location.href='" . $dialog_url . "'</script>");
    }
    else
    {
        mysql_close($connection);
        session_start();
        $code = $_REQUEST["code"];
        if(empty($code)) {
            $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
            $dialog_url = "http://www.facebook.com/dialog/oauth?client_id"
            . $app_id . "&redirect_uri=" . urlencode($my_url) . "&scope= user_location, friends_location, offline_access" . "&state="
            . $_SESSION['state'];
            echo("<script> top.location.href='" . $dialog_url . "'</script>");
        }
        if($_REQUEST['state'] == $_SESSION['state']) {
            $token_url = "https://graph.facebook.com/oauth/access_token?"
            . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
            . "&client_secret=" . $app_secret . "&code=" . $code;
            $response = @file_get_contents($token_url);
            $params = null;
            parse_str($response, $params);
            $graph_url = "https://graph.facebook.com/me?access_token"
            . $params['access_token'];
            $user = json_decode(file_get_contents($graph_url));
            echo("Hello " . $user->name);
        }
        else
        {
            echo("The state does not match. You may be a victim of CSRF.");
        }
    }

看起来太简单了,但你的oauth url中有空格,你已经分配给$dialog_url了吗?