我正在开发一个 iOS 应用程序,我希望能够通过 facebook 向我的应用程序发送邀请,我使用 presentRequestsDialogModallyWithSession 设法做到了
但我也希望我的应用程序知道邀请是发给谁的。这可能吗?
我正在开发一个 iOS 应用程序,我希望能够通过 facebook 向我的应用程序发送邀请,我使用 presentRequestsDialogModallyWithSession 设法做到了
但我也希望我的应用程序知道邀请是发给谁的。这可能吗?
是的,这是绝对可能的。这是获取用户已向其发送邀请的用户朋友列表的方法。
在 presentRequestsDialogModallyWithSession 中必须有一个像这样的处理程序:
handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
您可以在 resultURL 变量中获取响应 URL 的结果。如果您使用此方法将其转换为字符串
[resultURL parameterString]
你会得到 fbconnect URL,它是这样的: fbconnect://success?request=57985658213xxxx&to%5B0%5D=13xxxxxxx9&to%5B1%5D=1000000xxxxxxx3
这里,request= 之后的第一个参数是“57985658213xxxx&to”,即请求 ID,其余由“&to%5B0%5D=”和“&to%5B1%5D=”分隔的参数是朋友的 facebook id。这里我把邀请发给了两个人,他们是:13xxxxxxx9, 1000000xxxxxxx3
我在上面的 id 中放置了 xxxxxxx 而不是所有数字,因为我不想在 stackoverflow 中公开显示我朋友的 facebook id ;)
要添加到 regeint 的答案,在使用将返回的 URL 转换为字符串之后
NSString* fbResponse = [resultURL absoluteString];
我遍历发送给presentRequestsDialogModallyWithSession的 Facebook 好友列表(按顺序),并创建以下正则表达式以从返回的 URL 字符串中提取好友的 Facebook ID:
(?:to%5B0%5D\=)(\d+)
其中0是我想要的项目的索引,在这个例子中是第一个。
注意:虽然这可行,但我发现整个解决方案非常脆弱。它对 presentRequestsDialogModallyWithSession 的响应很敏感,根本没有改变。一个更好的解决方案可能是放弃 Objective-C 类并通过 HTTP 请求进行图形调用,这有望返回 JSON,而不是像在 javascript 中那样——更加健壮。