このコードを使用して、共有ダイアログを表示します。
if (![[FBSession activeSession] isOpen]) {[self login]; return;}
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"name", @"name",
@"caption", @"caption",
@"description", @"description",
@"http://cnn.com", @"link",
@"http://cnn.com/.png", @"picture",
nil];
[FBWebDialogs presentFeedDialogModallyWithSession:nil
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) {
if (error) {
NSLog(@"Error publishing story.");
} else {
if (result == FBWebDialogResultDialogNotCompleted) {
NSLog(@"User canceled story publishing (clicked the 'x' icon)");
} else {
// Handle the publish feed callback
NSLog(@"Handle the publish feed callback");
}
}
}];
Info.plist に適切なエントリ (sdk ドキュメントに従って必要) を追加しました。
Facebookのリダイレクトも処理するAppDelegateメソッド:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// attempt to extract a token from the url
return [FBAppCall handleOpenURL:url
sourceApplication:sourceApplication
fallbackHandler:^(FBAppCall *call) {
NSLog(@"In fallback handler");
}];
}
-(void)applicationWillTerminate:(UIApplication *)application{
[FBSession.activeSession close];
}
また、iOS Facebook 3.5.1 SDK に必要なフレームワークも追加しました。
空のダイアログ ボックス(実際のデバイスとシミュレータの両方) が表示され、読み込みインジケータが永久に回転します。
ログなどにエラーは表示されず、簡単に閉じることができます (正しいハンドラー ログを使用)。
FBSession が正しく開始され、開かれていると仮定します (Safari へのリダイレクトを介して正常に承認し、アプリに戻ることができるため、リダイレクトが正常に機能すると思います)。
なぜそれが起こっているのですか?私は何が欠けていますか?ところで: エラー ログがないのはなぜですか?
これまで何度も Facebook の統合を実装してきたので、これはとてもイライラしますが、このアプリでは、「これまでにないほど簡単になる」と宣伝されている最新の SDK を試してみたかったのです。