【问题标题】:Facebook PHP SDK/Graph API - Returning MY name/info, but not anyone elses?Facebook PHP SDK/Graph API - 返回我的姓名/信息,但不是其他人?
【发布时间】:2011-06-03 02:23:55
【问题描述】:

我正在尝试使用 Graph API 和 PHP SDK for Facebook 来尝试返回当前用户名,但我只是运气好,它显示了我的名字。这很简单,知道 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 并授予您的应用程序访问那里的详细信息,您无法访问其他人的 $user_profile['name'] 会话

标签: php facebook-graph-api facebook-php-sdk


【解决方案1】:

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

如果适合你,请告诉我。

【讨论】:

  • 谢谢。我很确定用户必须对应用程序进行身份验证,但我不完全确定,但感谢您澄清这一点。 :)
  • @JhourladEstrella +1 它也对我有帮助
【解决方案2】:

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

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

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

保存 access_token 和用户 ID,以便您无需登录 facebook 即可自动访问数据或发布消息。

【讨论】:

    【解决方案3】:

    我已经解决了您的问题。我使用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'];
    ?> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 2016-04-25
      • 1970-01-01
      相关资源
      最近更新 更多