Facebook的iOS presentRequestsDialogModallyWithSession返回选定的朋友

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

但我也希望我的应用程序知道邀请函发给谁。这可能吗?

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

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

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

你可以在resultURLvariables中得到响应URL的结果。 如果通过使用这种方法将其转换为string

 [resultURL parameterString] 

fbconnect:// success?request = 57985658213xxxx&to%5B0%5D = 13xxxxxxx9&to%5B1%5D = 1000000xxxxxxx3

这里,请求后的第一个参数=“57985658213xxxx&to”是请求标识,其余参数用“&to%5B0%5D =”和“&to%5B1%5D =”分隔的是朋友的Facebook标识。 在这里,我已经邀请了两个人,他们是:13xxxxxxx9,1000000xxxxxxx3

而不是所有的数字,我把XXXXXXX放在上面的id,因为我不想在这里公开显示我的朋友的Facebook的ID在这里;)

添加到regeint的答案,使用后将返回的URL转换为一个string

 NSString* fbResponse = [resultURL absoluteString]; 

我遍历我发送给presentRequestsDialogModallyWithSession (按顺序)的Facebook朋友列表,并创build以下正则expression式,从返回的URLstring中提取朋友的Facebook ID:

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

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

注意:虽然这个工作,我觉得整个解决scheme很脆弱。 它对来自presentRequestsDialogModallyWithSession的响应不敏感。 一个更好的解决scheme可能是放弃Objective-C类,并通过HTTP请求进行graphics调用,这将有望返回JSON,而不是像JavaScript一样 – 更健壮。