【问题标题】:Facebook Graph API - Issues with friends that have installed the appFacebook Graph API - 已安装该应用程序的朋友的问题
【发布时间】:2014-07-07 08:04:13
【问题描述】:

我有一个 android 客户端,它启动登录到 facebook,接收访问令牌和有关个人资料的其他详细信息。

android 客户端将 access_token 和详细信息传递给服务器 (PHP)。

两者都安装了 facebook sdk。

当我从 PHP 发起 FacebookRequest 时,例如 '/me/' 它正在工作。

但是当我从 PHP 发起一个(已安装 APP 的朋友)FacebookRequest '/我/朋友'。我得到“空”。

当我使用 facebook 提供的图形浏览器时,结果是:

{
  "data": [
  ]
}

帮助者的其他信息:

  • 该应用目前仅包含两个用户,他们是 facebook 上的好友。

  • 这些用户都是应用的管理员。

  • 目前该应用尚未上线\发布。

  • 我们没有按照某处的建议在统计信息和评论中“开始提交”。

  • 我们请求“user_friends”权限。

由于堆栈溢出中的所有内容都需要声誉, 权限如下所示:

http://i.stack.imgur.com/kURwB.png

谢谢

编辑:


好的,我添加了两个测试用户,让他们成为彼此的朋友,并且 /me/friends 通过图形浏览器为他们工作。

但为什么它不适用于非测试用户?

【问题讨论】:

    标签: php android facebook facebook-graph-api


    【解决方案1】:

    好的, 因此,显然 Facebook 在提供新的访问令牌时遇到了问题。 不知道为什么,但它为新登录提供了相同的访问令牌。

    现在他们修正了这是我用 PHP 编写的一个方便的函数,它可以让用户 解析 Facebook 的回复,这可能会派上用场,因为 Docs、Google、StackOverFlow 上没有任何解释。

    use Facebook\FacebookSession;
    use Facebook\FacebookRequest;
    
    function find_my_facebook_friends($access_token){
    
    require_once 'facebook-php-sdk-v4-4.0-dev/autoload.php';
    
    FacebookSession::setDefaultApplication('app_key','secret_key');
    
    
    $session = new FacebookSession($access_token);
    $request = new FacebookRequest(
        $session,
        'GET',
        '/me/friends'
    );
    
      $response = $request->execute();
      $graphObject = $response->getGraphObject()->asArray();
    
      return $graphObject;
    
    
    
       }
    

    用法:

       include_once 'path/to/function.php';
      //You wanna use it, just so the PHP file contains your app_key, secret_key Wont be exposed.
    
       $access_token = isset($_POST['access_token']) ? $_POST['access_token'] : NULL;
       $facebook_object = find_my_facebook_friends($access_token);
    
    
       for($i = 0 ; $i < count($facebook_object['data']) ; $i++){
    
        $id = get_object_vars($facebook_object['data'][$i]);
        echo $id['id'];
        echo $id['name'];
       //You don't have to echo, you could handle those fields as you wanted.
    
    }
    

    此功能指的是移动客户端将其登录用户的访问令牌传递给服务器。

    我希望这会为您节省大量时间!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多