Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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游戏的用户授权应用程序而不使用;访问Facebook.com“;标志_Php_Session_Facebook - Fatal编程技术网

Php 我如何允许我的Facebook游戏的用户授权应用程序而不使用;访问Facebook.com“;标志

Php 我如何允许我的Facebook游戏的用户授权应用程序而不使用;访问Facebook.com“;标志,php,session,facebook,Php,Session,Facebook,我在这里遵循教程: 但我无法通过允许用户授权我的应用程序的第一步。应用程序位于,而画布URL处于 我通过PHP检查是否存在与用户的活动会话。如果它不存在,我将用户重定向到登录URL。以下是页面顶部的代码: // Facebook library require 'src/facebook.php'; // Create our Application instance $facebook = new Facebook(array( 'appId' => 'xxxxxx',

我在这里遵循教程:

但我无法通过允许用户授权我的应用程序的第一步。应用程序位于,而画布URL处于

我通过PHP检查是否存在与用户的活动会话。如果它不存在,我将用户重定向到登录URL。以下是页面顶部的代码:

// Facebook library
require 'src/facebook.php';

// Create our Application instance
$facebook = new Facebook(array(
    'appId'  => 'xxxxxx',
    'secret' => 'xxxxxxxxxxxx',
    'cookie' => true,
));

// Let's see if we have an active session
$session = $facebook->getSession();

$me = null;
// Session based API call.
if (!empty($session)) {
    // Active session; let's try getting the user ID and info
    try {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        error_log($e);
    }
    $logoutUrl = $facebook->getLogoutUrl();
    print_r($user);
    exit();
} else {
    // There's no active session; let's generate one
    $loginUrl = $facebook->getLoginUrl();
    header('Location: ' . $loginUrl);
}
问题是,在访问时,我被带到一个屏幕上,屏幕上有蓝色的Facebook徽标和一个链接,上面写着“转到Facebook.com”

但是,如果我允许用户单击链接与Facebook连接,就像这样:

<a href="<?php echo $loginUrl ?>" target="_top">Connect</a>

…Facebook网站上会直接显示“允许/不允许”对话框,但如果我单击“允许”或“不允许”,它会直接进入我的画布页面(http://freelancer.xylotgames.com)而不是我更喜欢的嵌入式应用程序页面

我怎样才能让它工作?我看到应用程序/游戏使用弹出窗口而不是重定向。这是首选吗?如果是,我会怎么做?当NetTuts+教程很可能适用于其他人时,为什么它不适用于我呢?

我更喜欢弹出式方法(或Facebook内部的iframe对话框),您可以使用以下方法打开:

  • 常规HTML弹出窗口:
    FB.login
    函数

  • Iframe对话框:
    FB.ui
    函数


对于你的重定向问题,我会在应用程序的配置中仔细检查URL。

我遇到了这个问题。我认为你需要改变的是实际的重定向。您的登录URL正在iframe中加载,因为这就是标题所能做的。FB检测到这一点,并给你一个按钮,以帮助打破框架。如果您想跳过此操作,则需要将浏览器的顶层重定向到登录url

而不是
标题('Location:'。$loginUrl)使用:

die("<script type='text/javascript'>top.location.href = '" . $loginUrl. "';</script>");
die(“top.location.href=””$loginUrl.“;”;

它非常适合我,我的应用程序具有完全无缝的登录和会话刷新功能。您甚至可以在会话已过期的ajax请求中吐出此消息,它将为您获得一个新会话。

使用您的链接将其作为一个弹出窗口进行操作似乎效果很好。非常感谢你!