FB PHP SDK获取通过fbid或accesstoken授权app的朋友

时间:2014-05-15 11:37:25

标签: php api facebook-fql facebook-php-sdk phalcon

我正在使用Phalcon Framwework和Facebook PHPSDK v2编写的iPhone App API。所有身份验证都在客户端上完成,一旦服务器验证了fb访问令牌,就会在客户端和服务器之间建立单独的HMAC身份验证。 我的最终目标是返回朋友ID,姓名和个人资料图片网址的列表,他们已授权应用给定新用户用户fbid或acccess令牌。我已经使用此库将SDK包含在我的Phalcon应用程序https://github.com/geass/Phalcon-Facebook-Library

我已经搜索了SO以获得anwer并尝试了一些图形请求,但它们似乎没有用。

我在图API探测器中使用了以下很容易找到的FQL:

SELECT uid, name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = 123456) AND is_app_user = 1
如果访问令牌有效,

似乎有效。

当我尝试在SKD中使用相同的FQL我不知道如何应用访问令牌时,只需执行以下操作:

 function getFriendsUsingApp($fbId){

        $params = array(
        'method' => 'fql.query',
        //'query' => "select pic_square from user where uid=$fbId",
        'query' => "SELECT uid, name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = $fbId) AND is_app_user = 1",
         );

        $result = $this->_facebook->api($params);

        return($result);

       }

导致以下错误:

致命错误:未捕获异常:102:需要用户会话   投入 D:\ library \ Social \ sdk \ base_facebook.php 在线 1271

如何使用fb id或Access令牌或两者同时获取此信息?

感谢。

1 个答案:

答案 0 :(得分:0)

我找到的解决方案是花时间让FBSDK在Phalcon中正常运行,然后使用图形请求(它巧妙地处理了我在file_get_contents()中使用HTTPS时遇到的很多问题)。然后Somenone指出FB API文档我说你可以在GET图形请求的末尾添加访问令牌。

在我的脸书库文件中:

function getFriendsUsingAppIds($fbId, $accessToken){           
        return $this->_facebook->api("$fbId/friends?fields=installed&access_token==$accessToken");

    }

这给了

[0] => Array
                (
                    [id] => 305232
                )

            [1] => Array
                (
                    [id] => 305391
                )
            [633] => Array
                (
                    [installed] => 1
                    [id] => 100005007310527
                )

我最初完全错过了第633行,并假设我只是得到了所有朋友的列表。

然后我删除了没有使用简单foreach安装set的行。