通过taggable_friends从Graph API获取Facebook用户ID

21

在v1.0 API中,我能够通过以下方式获取我的朋友的Facebook ID:

{
      "name": "Somename SomeSurname", 
      "id": "100007797060798"
 }
在v2.0中,我只能使用taggable_friends来获取这些信息,但是可能我在文档中漏掉了什么,因为我所得到的ID是这样的(ID总是不同的):
{
      "id": "AaKJ-QN8OlY3m-2DHeVnc5oQZFnx_V0ptUF8XFEstr3EcS1LltvAx0_xptve3DWc_vI1zP0s4RhVMOTk1EqDvzCHMkEqFRMIkuXtyXe5d9O1-Q", 
      "name": "Somename someSurname"
}

有人能告诉我在哪里可以获取真正的身份证号码吗?


你需要获取特定用户的好友吗? - Sankalp Bhatt
仅限已登录用户的好友。 - webduvet
在为该用户创建访问令牌时,您需要请求“user_friends”权限。 - Sankalp Bhatt
嘿,Webduvet!我遇到了和你一样的问题。如果你找到了解决方案,请帮帮我。 - Bevin Patel
@BevinPatel,事实上,我找到了一个解决方法来绕过这个问题。我正在使用电话号码和短信来获取用户。 - webduvet
5个回答

12

这可否反过来呢?从用户ID获取可打标签的ID? - rishi
不是这样的。但是,当你标记一个没有安装你的应用程序的用户时,Facebook会在幕后创建一个app_scoped_user_id。通过查询从操作返回的instance_id,可以检索此ID。我还没有测试过使用该ID再次标记用户是否有效,但可能会起作用 :) - Jonas Liljestrand
我仍然无法相信我无法识别可标记的朋友。如何处理Facebook API非常有限。 - Patrik Vaberer

3

/me/taggable_friends 显示除一些好友外的所有好友。在一个案例中,一个个人资料中有326个好友,但此处仅显示317个;在另一个个人资料中,总共有194个好友,但仅显示182个。

$flist = $fb->api('/me/taggable_friends?fields=name,id&limit=1000');

显示了列表中几乎所有的好友(尽管限制过高),但在两种情况下都留下了一些。如果您的应用程序未经批准和发布,则可能无法在 API Explorer 上运行,但对于您的应用程序的管理员、测试人员和开发人员来说,这将是有效的。

您不能解码此 ID,因为那样做会破坏它最初的编码目的。

我还想知道是否有可能邀请用户的朋友使用该应用程序?


当我加了限制时,它从中检索到25个朋友,但实际上却检索到了所有的朋友。 - Ahmed Bermawy

0

也许你可以通过搜索相同图片的人来获取ID。

me?fields=taggable_friends{name,picture}

{
        "name": "ปาณิศา หลานตากอย.ตาแก้ว คงเพ็ชร",
        "picture": {
          "data": {
            "url": "https://fb-s-c-a.akamaihd.net/h-ak-fbx/v/t1.0-1/p100x100/19113605_1931156107168776_605762913793659652_n.jpg?oh=951c7c13a85b0ce3abe8a6e7bacae127&oe=59DA354A&__gda__=1508078042_6baaa5dc05f7b1e85f7a90e8c21e517b"
          }
        },
        "last_name": "คงเพ็ชร",
        "first_name": "ปาณิศา",
        "id": "AaKW3BwqCsT_4IspPO5jlFZet-4LnXQfulxsumuI-4Mel7M-0cTX-7gbARaOJSy7JMbLDBcwCEMdBvJQmZ7-YNEN-o_EDpugQfY02UqjED_uvQ"
      }

然后

search?type=user&q=ปาณิศา หลานตากอย.ตาแก้ว คงเพ็ชร&fields=id,name,picture


"data": [
{
  "id": "1519971271620597",
  "name": "ปาณิศา หลานตากอย.ตาแก้ว คงเพ็ชร",
  "picture": {
    "data": {
      "is_silhouette": false,
      "url": "https://fb-s-c-a.akamaihd.net/h-ak-fbx/v/t1.0-1/p50x50/19113605_1931156107168776_605762913793659652_n.jpg?oh=21c44649424500928d0299291414f1aa&oe=59A27344&__gda__=1508317043_a83bb236c462cd9d179f8e949cea801f"
    }
  }
}

]

这两个结果具有相同的URL文件名19113605_1931156107168776_605762913793659652_n.jpg,然后你可以从搜索结果中获取ID1519971271620597


-2

1
他正在寻找朋友ID,而不是已登录用户的。 - saurabh

-6

在为该用户创建访问令牌时,您需要请求“user_friends”权限。

之后,您可以调用图形 API:

https://graph.facebook.com/v2.0/me?fields=friends

它将以以下格式返回结果:

{
  "friends": {
    "data": [
      {
        "name": "Dummy1",
        "id": "454####455"
      },
      {
        "name": "Dummy2",
        "id": "82####374"
      },
      {
        "name": "Dummy3",
        "id": "10###7277"
      },

    ]
  },
  "id": "14###1568"
} 

8
这只给我那些已经接受了这个应用程序的朋友,对于我想要的并没有太大用处。 - webduvet
@SankalpBhatt 我如何获取所有的好友?我想要某个用户ID下的所有好友。 - Manibharathi
关于这个问题:我能在浏览器中完成它(不在应用程序的上下文环境中),但我仍然得到了一个漫长的朋友列表……这是否意味着如果你发出网络请求,你仍然可以获得完整的列表? 编辑:它并不是完整的列表,但Facebook如何知道“应用程序上下文”呢? - Julien Altieri
已过时... 你不能在v2.0中使用它 > - Lukas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接