私は iOS アプリを開発しており、facebook を介して自分のアプリに招待状を送信できるようにしたいと考えています。
しかし、招待状の送信先をアプリに知らせたいのですが、それは可能ですか?
私は iOS アプリを開発しており、facebook を介して自分のアプリに招待状を送信できるようにしたいと考えています。
しかし、招待状の送信先をアプリに知らせたいのですが、それは可能ですか?
はい、絶対に可能です。ユーザーが招待状を送信したユーザーの友達のリストを取得する方法は次のとおりです。
presentRequestsDialogModallyWithSession には、次のようなハンドラーが必要です。
handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
応答 URL の結果は、resultURL 変数で取得できます。この方法で文字列に変換すると
[resultURL parameterString]
次のような fbconnect URL を取得します: fbconnect://success?request=57985658213xxxx&to%5B0%5D=13xxxxxxx9&to%5B1%5D=1000000xxxxxxx3
ここで、request= の後の最初のパラメータはリクエスト ID である "57985658213xxxx&to" であり、"&to%5B0%5D=" と "&to%5B1%5D=" で区切られた残りのパラメータは友達の Facebook ID です。ここで招待状を 2 人に送信しました。こちらが 13xxxxxxx9、1000000xxxxxxx3 です。
すべての数字の代わりに、上記の ID に xxxxxxx を配置しました。これは、友人の Facebook ID をスタックオーバーフローで公開したくないためです ;)
regeint の回答に追加するには、返された URL を文字列に変換した後、
NSString* fbResponse = [resultURL absoluteString];
presentRequestsDialogModallyWithSessionに送信した Facebook の友達のリストを(順番に) 反復処理し、次の正規表現を作成して、返された URL 文字列から友達の Facebook ID を抽出します。
(?:to%5B0%5D\=)(\d+)
ここで、0は必要なアイテムのインデックスです。この例では、最初のアイテムです。
注: これは機能しますが、このソリューション全体はかなり壊れやすいと思います。presentRequestsDialogModallyWithSession からの応答がまったく変化しないことに敏感です。おそらくより良い解決策は、Objective-C クラスを放棄し、HTTP リクエストを介してグラフ呼び出しを行うことです。これにより、javascript の場合のように代わりに JSON が返されることが期待されます。はるかに堅牢です。