2011-03-15 24 views
2

我在这里的教程如下:http://net.tutsplus.com/tutorials/php/how-to-authenticate-your-users-with-facebook-connect/如何让我的Facebook游戏用户在没有“转到Facebook.com”徽标的情况下授权应用程序?

但我不能超越允许用户授权我的应用程序的第一步。该应用程序在http://apps.facebook.com/freelancergame/,而画布URL是http://freelancer.xylotgames.com

我通过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); 
} 

的事情是,在访问http://apps.facebook.com/freelancergame/我带到与蓝色的Facebook标识和链接的屏幕说:“去Facebook.com”。

但是,如果我允许用​​户点击一个链接与Facebook connnect像这样:

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

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

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

回答

2

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

为了您的重定向的问题,我会仔细检查网址的应用程序的配置。

+0

将它作为弹出窗口使用您的链接似乎完美。非常感谢你! – TerranRich 2011-03-15 14:07:35

2

我有这个问题。我认为你需要改变的是实际的重定向。您的登录URL正在加载到iframe中,因为这是所有头文件可以做到的。 FB检测到并给你一个按钮来帮助打破框架。如果你想跳过这个,你需要将浏览器的顶层重定向到登录网址。

而不是header('Location: ' . $loginUrl);使用:

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

它完美对我来说,我的应用程序已经完全无缝登录和会话清爽。你甚至可以在一个有过期会话的ajax请求期间吐出来,它会为你得到一个新的会话。

相关问题