我正在尝试使用Graph API和Facebook的PHP SDK来尝试返回当前用户名,但我只是幸运地显示了我的名字。这非常简单,知道Graph API的人不应该只是通过查看我正在使用的代码来帮助我。
require 'facebook.php';
$appid=get_post_meta($thisID,'_EFBPDAppID',true);
$appsec=get_post_meta($thisID,'_EFBPDAppSec',true);
$facebook = new Facebook(array(
'appId' => $appid,
'secret' => $appsec,
'cookie' => true
));
$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;
}
}
然后我使用它:echo $user_profile['name'];
来显示用户名,但它只显示我的名字。在任何其他配置文件中,它只显示该变量的空白位置。在我的个人资料中,它显示了我的名字。我还使用了print_r($user);
并显示了我的ID,但是对于任何其他配置文件,它都会显示0
。
用户是否需要对自己进行身份验证,或者是否已存在此信息的会话?如果有会话信息,如何获得会话信息?
任何可以提供帮助的人都会非常感激。感谢。
答案 0 :(得分:4)
为了安全和隐私,Facebook用户必须登录并允许当前应用程序访问其帐户信息。您可以使用不同的SDK完成此操作。大多数人使用Javascript,但我个人更喜欢PHP。 HTML中的简单实现如下所示:
<a href="<?php echo $this->facebook->getLoginUrl(array('next' => "http://www.yourdomain.com/facebooklogin_success", 'req_perms' => 'email,read_stream,publish_stream,offline_access'))?>">Login to Facebook</a>
它将生成如下内容:
<a href="https://www.facebook.com/login.php?api_key=1234567890&cancel_url=http%3A%2F%2Fyourdomain.com/facebooklogin_cancel.php%2F&display=page&fbconnect=1&next=http%3A%2F%2Fyourdomain.com/facebooklogin_success.php&return_session=1&session_version=3&v=1.0&req_perms=email%2Cread_stream%2Cpublish_stream%2Coffline_access">Login to Facebook</a>
您应该能够使用Graph API在该过程之后访问用户的信息。
$fbuser = $facebook->api('/me');
echo "Hello ".$fbuser['name'];
让我知道是否适合您。
答案 1 :(得分:2)
http://www.9lessons.info/2011/02/login-with-facebook-and-twitter.html
您的用户必须验证您要创建的应用程序。
之后facebook将使用access_token重定向(并将该进程称为回调。)
保存access_token和用户ID,以便您可以自动访问数据或发布消息,而无需登录facebook。
答案 2 :(得分:0)
我已经纠正了你的问题。我使用simple Facebook application。它有效,但正在开发中。
您必须先授权用户并获取其用户ID。之后,只需用user_id替换“我”,就完成了。
<?php
require_once 'facebook-php-sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => '[your app id]',
'secret' => '[your app secreat]',
'cookie' => true,
));
// Then authorize the current user in the way you desire
// get his user_id
$user_profile = $facebook->api('/[the user's user id]');
echo $user_profile['name'];
?>