2012-01-22 65 views
1

我想使用Facebook ID来欢迎所有进入我的页面的Facebook用户。示例:Facebook用户ID

Hello * name *, Welcome to my page!

我尝试将它与PHP SDK一起使用,并将SDK文件复制到我的主机。这是我尝试使用代码:

<?php 
require_once 'facebook.php'; 
$facebook = new Facebook(array(
    'appId' =>'1234', 
    'secret' => '12345', 
    'cookie' => true, 
    'domain' => 'http://www.facebook.com/Guides4All.Co.IL/' 
)); 

$session = $facebook->getSession(); 
if (!$session) { 
    //user not logged into facebook 
    $uName = "Guess"; 
} else { 
    try { 
     $user_id = $facebook->getUser(); 
     $tt = "/" . $user_id; 
     $me = $facebook->api($tt); 
     $uName = $me["name"]; 
    } 
    catch (FacebookApiException $e) { 
    } 
} 
echo "Welcome $uName"; 
?> 

螺母我得到了一个错误:

Fatal error: Call to undefined method Facebook::getSession() in /*****.php on line 11 

我能做些什么来解决这个问题?什么是getSession()现在该做什么?

+0

您使用的'domain'选项不是真正的域名,而是URL。 BTW,实际上PHP-SDK没有这样的配置选项... –

回答

2

那么,基本上,这是因为Facebook::getSession()方法不存在。
换句话说$session = $facebook->getSession();就是不行。

当您实例化Facebook对象时,会话已经启动。

的代码应该更像在SDK located at GitHub

+0

谢谢你的回答。 所以我试图改变'$ session = $ facebook-> getSession();''到'$ user = $ facebook-> getUser();' 现在页面正在工作,但没有给我facebook用户名。那是说我“欢迎猜” ,我想得到:Welcome ** name **! 那么如何解决这个问题? 谢谢! –

+0

我不知道,因为您在问题中提供的代码不起作用。您应该尝试实施我链接的示例,以便您可以查看可用变量以及如何使用它们(包括名称)。 – Repox

+0

您是否在另一个页面看到了这个技巧? 像另一个页面,欢迎那里的用户 –

2

发现的例子有一个在新的PHP-SDK没有方法getSession。您应该使用getUser方法获取用户标识。

为了得到这个工作,你应该首先authenticate user。您可以使用getLoginUrl方法来创建用户需要访问的URL以连接到您的应用程序。

您需要阅读文档Authentication,PHP-SDK并挖掘examples

+0

谢谢你的回答。 所以我试图改变'$ session = $ facebook-> getSession();''到'$ user = $ facebook-> getUser();' 现在页面正在工作,但没有给我facebook用户名。那是说我“欢迎猜” ,我想得到:Welcome ** name **! 那么如何解决这个问题? 谢谢! –

+0

只需获取用户标识而不是调用graph.facebook.com,它将返回JSON名称 – Hadrian

+0

@Tomer,我已更新我的答案以提供更多详细信息 –

0
$facebook = new Facebook(…); 
$user = $facebook->getUser(); 
if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

// $ user_profile获取有关该用户的所有信息。然后打印出你想要的数组。

1

这会给你访问用户的全名。即使它已被弃用,它也可以工作。

<div id="fb-root"></div> 
<script src="https://connect.facebook.net/en_US/all.js#appId=YOUR_APP_ID&xfbml=1"></script> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'YOUR_APP_ID', 
     cookie: true, 
     xfbml: true, 
     oauth: true 
    }); 
    (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 
<fb:serverFbml><script type="text/fbml"><fb:userlink uid="loggedinuser"/></script></fb:serverFbml>