【问题标题】:FB PHP SDK Get friends who authorised app by fbid or accesstokenFB PHP SDK 获取通过 fbid 或 accesstoken 授权应用的好友
【发布时间】:2014-05-15 11:37:25
【问题描述】:

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

我已经搜索了一个答案并尝试了一些图形请求,但它们似乎不起作用。

我使用了以下在图形 API 资源管理器中的 SO 上很容易找到的 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 或访问令牌或两者兼有,我如何获取此信息?

谢谢。

【问题讨论】:

  • 您确定您的访问令牌已创建且有效吗?得到它,并在developers.facebook.com/tools/debug中调试它
  • 是的,我从应用程序上的测试用户那里获取了令牌,当我在调试器中尝试 FQL 时,我得到了很好的结果
  • 不要忘记会话过期。您是否在 Facebook Debug 中使用该访问令牌后立即使用它?

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


【解决方案1】:

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

在我的 facebook 库文件中:

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 删除了未安装集的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2015-09-13
    • 1970-01-01
    相关资源
    最近更新 更多