ios - 如何发现哪些 friend 接受了 Facebook API 的邀请?

标签 ios facebook facebook-graph-api

Facebook API v2.0 引入了 invitable_friends edge .

从 GET 请求到此边缘的示例响应是:

{
  "data": [ 
    {
      "id": "AVkgK9fLFxasdvXNbDV_gYogR6lXa9SKLnH...", 
      "name": "Anita Sujarit", 
      "picture": {
        "data": {
          "is_silhouette": false, 
          "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/t1.0-1/c0.0.50.50/p50x50/1470158_10201991701127909_302023572_t.jpg" 
        }
      }
    }
}

仔细观察那个 ID,它不是一个普通的 Facebook 用户 ID。相反,它是一个 Invite Token ;此 token 传递给 Requests Dialog作为 to 参数的值。

The invite token, returned on each of the friend objects as the value of a field named id, is a unique (per user and per game) string of variable length. The invite token is subject to expiration, and may change between game sessions. It is therefore not advisable to cache these results, or to try to assign them to a given person.

friends edge现在只返回已经在使用该应用的 friend


我的问题是我现在无法交叉引用我邀请了哪些 friend ,哪些 friend 接受了。

以前,我会在向他们发送邀请时存储一个好友 ID,并在稍后将其与玩游戏的好友列表进行核对,但现在由于以下几个原因这是不可能的:

  • 邀请 token 未出现在 friend 边缘
    • 无论如何它都是动态的
  • 普通用户 ID 不在 invitable_friends 边上。
  • 我可以使用用户名作为键,但这不是唯一的。

实际问题: 有没有人设计出一种方法来确定已被邀请的用户接受了邀请?

最佳答案

TLDR:保存来自实际邀请这些 friend 请求的响应

据我了解reference你提供了:

您可以开始请求 invite_token,我想您已经可以做到了。

作为答案,您根据 invitable_friend 得到这个:

{
  "id": "AVlzYTkXshfBqLe58zR9tY5dZ7L0wltTUkWKT0Z5V87zkwv-39...", // Invite Token
  "name": "Guy Cross",
  "picture": {
    "data": {
      "is_silhouette": false,
      "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn1/t5.0-1/623782_622770420_2109148508_q.jpg"
    }
  }
}

该页面前面提到了一般如何进行请求:

FB.ui({method: 'apprequests',
  message: 'YOUR_MESSAGE_HERE',
  to: 'USER_ID, USER_ID, INVITE_TOKEN' // It says invite token
}, function(response){
  console.log(response);
});

查看带有 to 的行:您可以将邀请 token 放在那里。

现在响应看起来像这样:

{
  request: 'REQUEST_OBJECT_ID'
  to:[array of USER_IDs]
}

你得到了你的用户 ID。


如果您更进一步,需要更多信息或想看看谁接受了,那么您有两个选择:

  • 可以查看用户id是否授权了游戏
  • 当新用户登录时,您可以询问该新用户的所有请求。在那里你可以追踪谁邀请了他。 获取 https://graph.facebook.com/me/apprequests?access_token=[用户访问 token ]
  • 您保存所有数据(在 TLDR 中说明)并在每次新用户加入您的游戏时检查新用户 ID 是否在您提到的请求列表中。

要检查谁邀请了他,您可以使用 http://graph.facebook.com/{REQUEST_OBJECT_ID}?access_token=USER_ACCESS_TOKEN 检查 request_object_id < em>recieving 用户和以下响应将是:

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "to": {
    "name": "RECIPIENT_FULL_NAME",
    "id": "RECIPIENT_USER_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

如果您使用来自发件人的用户访问 token ,您会得到:

{
  "id": "REQUEST_OBJECT_ID",
  "application": {
    "name": "APP_DISPLAY_NAME",
    "namespace": "APP_NAMESPACE",
    "id": "APP_ID"
  },
  "from": {
    "name": "SENDER_FULL_NAME",
    "id": "SENDER_USER_ID"
  },
  "message": "ATTACHED_MESSAGE",
  "created_time": "2014-01-17T16:39:00+0000"
}

为防止这种情况,您可以指定接收用户的用户 ID,并获得与接收方相同的答案:https://graph.facebook.com/{REQUEST_OBJECT_ID}_{USER_ID}?access_token= {APP_ACCESS_TOKEN}

关于ios - 如何发现哪些 friend 接受了 Facebook API 的邀请?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24451650/

相关文章:

ios - cordova build ios 不创建 ipa 文件

c++ - iOS 库的 libxml2 链接错误

facebook - 如何设置 Metatag fb :pages correctly to enable link editing for one page with multiple channels?

javascript - 如果禁用第 3 方 cookie,facebook javascript/php SDK 的 "talk"可以互相发送吗? facebook->getUser() 返回 0

ios - iOS 中 Facebook 可标记好友 ID 的解密代码

android - FacebookMobile.init OAuthException

php - Lightbox 中的 Facebook API 登录和权限请求。是否可以?

ios - 如何从 iOS Swift 3 的键盘上删除更改语言键按钮

iphone - 向 iOS 开发者帐户添加更多设备

facebook - 获取 Facebook 公开帖子的所有评论