Facebook iOS presentRequestsDialogModallyWithSession返回选定的朋友

时间:2014-03-12 16:40:01

标签: ios iphone facebook facebook-graph-api fbwebdialogs

我正在开发一个iOS应用程序,我希望能够通过Facebook向我的应用程序发送邀请,我设法使用 presentRequestsDialogModallyWithSession

但我也希望我的应用知道邀请函的发送对象。这可能吗?

2 个答案:

答案 0 :(得分:5)

是的,这绝对是可能的。 以下是获取用户已向其发送邀请的用户列表的方法。

在presentRequestsDialogModallyWithSession中必须有一个像这样的处理程序:

handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {

您可以在resultURL变量中获取响应URL的结果。如果使用此方法将其转换为字符串

[resultURL parameterString]

您将获得fbconnect网址,如下所示:fbconnect:// success?request = 57985658213xxxx& to%5B0%5D = 13xxxxxxx9& to%5B1%5D = 1000000xxxxxxx3

这里,请求后的第一个参数=" 57985658213xxxx& to"这是请求ID,其余参数用"&到%5B0%5D ="和"&到%5B1%5D ="是朋友' facebook id。在这里,我已将邀请函发送给两个人,他们是:13xxxxxxx9,1000000xxxxxxx3

而不是所有数字,我已将xxxxxxx放在上面的ID中,因为我不想向我的朋友展示' facebook id在stackoverflow中公开;)

答案 1 :(得分:0)

在使用

将返回的URL转换为字符串后,添加到regeint的答案
NSString* fbResponse = [resultURL absoluteString];

我遍历我发送给 presentRequestsDialogModallyWithSession 的Facebook好友列表(按顺序)并创建以下正则表达式,从返回的URL字符串中提取朋友的Facebook ID:

(?:to%5B0%5D\=)(\d+)

其中 0 是我想要的项目的索引,在本例中是第一个。

注意:虽然这有效,但我发现整个解决方案非常脆弱。它对来自presentRequestsDialogModallyWithSession的响应很敏感,根本不会改变。一个更好的解决方案可能是放弃Objective-C类并通过HTTP请求进行图形调用,这有望像Javascript中那样返回JSON - 更加强大。