如何发现哪些朋友接受Facebook API邀请?

Facebook API v2.0引入了invitable_friends边缘。

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。 相反,它是一个邀请令牌; 该令牌作为to参数的值传递给Requests对话框。

邀请令牌作为名为id的字段的值在每个朋友对象上返回,是唯一的(每个用户和每个游戏)可变长度的字符串。 邀请令牌有效期届满,并可能在游戏会话之间更改。 因此不建议缓存这些结果,或尝试将它们分配给给定的人。

friends边缘现在只返回已经使用该应用的朋友


我的问题是,我现在无法交叉引用哪些朋友被邀请,哪些朋友已经接受。

以前,我会在我给他们发送一个邀请时储存一个朋友ID,并且在稍后的时间点,对照玩这个游戏的朋友列表进行检查,但是现在这是不可能的,原因如下:

  • 邀请令牌不存在于朋友边缘
  • 无论如何它都是动态的
  • 正常的用户ID不在invitable_friends边缘。
  • 我可以使用用户名作为关键字,但这不是唯一的。
  • 实际问题: 是否有人设计了一种方法,从邀请的用户那里确定已接受邀请的用户?


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

    据我了解你提供的参考资料:

    您可以开始请求invite_token ,我认为您已经能够做到这一点。

    作为答案,你可以通过invitable_friend得到这个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 :你可以把在那里邀请令牌。

    现在,响应如下所示:

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

    你有你的用户ID。


    如果你走得更远,要么需要更多的信息,要么想看看谁接受了,那么你有两种选择:

  • 你可以检查用户ID是否授权了游戏
  • 当新用户登录时,您可以要求为这个新用户提供所有请求。 在那里你可以跟踪谁邀请他。 GET https://graph.facebook.com/me/apprequests?access_token=[USER ACCESS TOKEN]
  • 如果新用户标识位于提及的请求列表中,则保存所有数据(以TLDR表示)并检查每次有新用户加入您的游戏时。
  • 要检查邀请他的人,您可以使用接收用户的http://graph.facebook.com/{REQUEST_OBJECT_ID}?access_token=USER_ACCESS_TOKEN来检查request_object_id ,以下回复将为:

    {
      "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"
    }
    

    如果你使用来自发件人的用户访问令牌,你会得到这个:

    {
      "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"
    }
    

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

    链接地址: http://www.djcxy.com/p/53357.html

    上一篇: How to discover which friends accepted invites with Facebook API?

    下一篇: winform facebook app accept friend request