Facebook PHP SDK/Graph API-返回我的姓名/信息,但不是其他人


Facebook PHP SDK/Graph API - Returning MY name/info, but not anyone elses?

我正在尝试使用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

用户需要对自己进行身份验证吗?还是应该已经有一个包含此信息的会话?如果有会话信息,我该如何获取?

任何能帮我的人我都会非常感激。谢谢

为了安全和隐私,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'];

如果对你有用,请告诉我。

http://www.9lessons.info/2011/02/login-with-facebook-and-twitter.html

用户必须对要创建的应用程序进行身份验证。

之后,facebook将使用access_token重定向(该过程称为回调。)

保存access_token和用户id,这样您就可以在不登录facebook的情况下自动访问数据或发布消息。

我已经纠正了你的问题。我使用一个简单的Facebook应用程序。它有效,但正在开发中。

您必须首先授权用户并获取他的用户ID。之后,只需将"me"替换为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'];
?>