2012-02-12 111 views
0

我试图开发一个新的FB应用程序,但它似乎已经改变了他们的方式再次。我正在寻找正确的方式来验证我的应用程序的fb用户,并检索用户标识。Facebook验证/请求用户标识

我发现下面的方法:

// Authenticate the user 
session_start(); 
if(isset($_REQUEST["code"])) { 
    $code = $_REQUEST["code"]; 
} 

if(empty($code) && !isset($_REQUEST['error'])) { 
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection 
$dialog_url = 'https://www.facebook.com/dialog/oauth?' 
    . 'client_id=' . $app_id 
    . '&redirect_uri=' . urlencode($app_url) 
    . '&state=' . $_SESSION['state'] 
    . '&scope=publish_actions'; 

print(''); 
exit; 

我的问题是现在。 我不需要facebook SDK吗?由于它不需要在这里即时通讯认为它根本不需要。 正确的方法是将此代码放在我的所有文档的顶部,从而不断确保用户被授权?

谢谢

回答

0

也许你正在寻找this

它需要像这样:

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
     var js, fjs = d.getElementsByTagName(s)[0]; 
     if (d.getElementById(id)) return; 
     js = d.createElement(s); js.id = id; 
     js.src = "http://connect.facebook.net/de_DE/all.js#xfbml=1&appId=<YOUR_APP_ID>"; 
     fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 
</script> 
+0

谢谢您的回复。 不太清楚我应该如何使用该功能,虽然 – JPJens 2012-02-12 14:31:36

+0

与链接的东西,你可以检查你的访客的状态。把它放在页面加载后处理的一些js脚本中。 (即onLoad()正文) 其他的东西放在html文件的正文结束标记 – helle 2012-02-12 14:36:30

+0

我在调用FB.Init(并添加警报到每个状态)后尝试以下,但即时通讯没有得到任何脚本错误或通知从警报,所以我怀疑我缺少的东西:http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/ – JPJens 2012-02-12 14:44:24

2

正确不再有需要的SDK。 Facebook试图让开发人员使用他们的Graph API,这就是为什么他们不再支持他们所有的旧垃圾代码,以及为什么FBML将在六月份停止工作等。

使用此页面来围绕新的API:http://developers.facebook.com/tools/explorer/

没有“正确的方法”。您可以做任何您需要做的事情来满足您的网站需求,如果这意味着设置令牌cookie并缓存20分钟的身份验证请求,而不是强制用户在每个请求中检查Facebook上的令牌,那取决于您。

+0

谢谢,帮助了很多。如此难以置信地难以在这个世界找到答案;) 你知道是否有办法检查用户是否仍然在facebook框架内。 我试图避免用户打开新的框架,将显示Facebook框架外的应用程序。 – JPJens 2012-02-12 14:25:35

+0

抱歉,这是不可能的,因为Facebook是在不同的域名。您通常会使用'top.location.href'作为同域父窗口URL访问权限。 – AlienWebguy 2012-02-12 16:05:33