Facebook iOS присутствуетЗапросы DialogModallyWithSession для возврата выбранных друзей

Я занимаюсь разработкой приложения для iOS и хочу иметь возможность отправлять приглашения в свое приложение через Facebook, что мне удалось сделать с помощью presentRequestsDialogModallyWithSession

Но я также хочу, чтобы мое приложение знало, кому были отправлены приглашения. Возможно ли это?

2 ответа

Да, это абсолютно возможно. Вот способ получить список друзей пользователя, которым пользователь отправил приглашение.

В presentRequestsDialogModallyWithSession должен быть обработчик, примерно такой:

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

Вы можете получить результат URL ответа в переменной resultURL. Если вы преобразуете его в строку с помощью этого метода

[resultURL parameterString]

вы получите URL-адрес fbconnect, который выглядит примерно так: fbconnect://success?request=57985658213xxxx&to%5B0%5D=13xxxxxxx9&%5B1%5D=1000000xxxxxxx3

здесь первый параметр после запроса = равен "57985658213xxxx&to", который является идентификатором запроса, а остальные параметры, разделенные символами "&to%5B0%5D=" и "&to%5B1%5D=", являются идентификатором друзей в facebook. Здесь я отправил приглашение двум лицам, вот они: 13xxxxxxx9, 1000000xxxxxxx3

Вместо всех цифр я поместил xxxxxxx в вышеуказанные идентификаторы, потому что я не хочу публично показывать идентификатор Facebook своих друзей здесь в stackru;)

Чтобы добавить к ответу regeint, после преобразования возвращенного URL-адреса в строку с помощью

NSString* fbResponse = [resultURL absoluteString];

Я перебираю список друзей Facebook, которые я отправил по адресу presentRequestsDialogModallyWithSession (по порядку), и создал следующее регулярное выражение для извлечения идентификатора Facebook друга из возвращенной строки URL:

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

где 0 - это индекс элемента, который я хочу, в этом примере - первый.

Примечание: хотя это работает, я нахожу это решение довольно хрупким. Он чувствителен к тому, что ответ от presentRequestsDialogModallyWithSession не меняется вообще. Лучшим решением, вероятно, было бы отказаться от класса Objective-C и сделать вызов графа через HTTP-запрос, который, мы надеемся, вместо этого вернул бы JSON, как это происходит в javascript - гораздо более надежный.

Другие вопросы по тегам