Facebook Graph API -与安装了该应用程序的朋友之间的问题


Facebook Graph API - Issues with friends that have installed the app

我有一个android客户端,启动登录到facebook,接收访问令牌和其他详细信息的配置文件。

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

都安装了facebook sdk。

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

但是当我从PHP启动一个(安装了应用程序的朋友)facebook请求时/我/朋友。我得到"null"。

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

{
  "data": [
  ]
}

辅助程序的附加信息:

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

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

  • 当前应用程序未发布。

  • 我们没有在统计和评论中"开始提交",

  • 我们请求权限'user_friends'

由于堆栈溢出中的所有内容都需要声誉,权限是这样的:

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

感谢编辑:


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

但是为什么它对非测试用户不起作用?

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

现在他们解决了这个问题,这里是我用PHP写的一个Handy函数,它可以让用户解析Facebook的响应,这可能是在手,因为没有解释过文档,谷歌,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.
}

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

我希望这将节省你很多时间!