galapagosit’s blog

本家 > http://galapagosit.com/

Facebook SDKでcompletionGestureが来なくてハマった

Facebook SDKでシェアするため、下記の様な処理を書いた。

    [FBDialogs presentShareDialogWithParams:shareParams
                                clientState:nil
                                    handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
                                        if (error) {
                                            NSLog(@"Error: %@", error.description);
                                        } else {
                                            NSLog(@"Success!");
                                            NSLog(@"result %@", results);
                                            if([results objectForKey:@"didComplete"] &&
                                               [[results objectForKey:@"completionGesture"]isEqualToString:@"post"]){
                                                // フィード成功
                                                [self successCallback];
                                            }
                                        }
                                    }];

しかし、ちゃんとシェアしたのにcompletionGestureパラメータが入ってこないケースがあった。
これが無いとユーザが本当にシェアしたのか判定がうまく出来ない。 (シェアしても、キャンセルしても同じパラメータ)

調べてみると、入ってこないケースは下記のアプリ設定の中に、
実装したアプリが含まれていない場合だった。

https://www.facebook.com/settings?tab=applications

ではどうすれば良いのか、と言いますとログイン処理を書かねばいけない様だ。面倒ですね。

Facebook Login for iOS

多分androidも同じです。

参考

ios - Detect successful facebook post using FBDialogs - Stack Overflow