7

Facebook SDK を最新の製品リリース (FacebookSDK-3.0.8.pkg - Facebook SDK 3.0 for iOS (update 1) [2012 年 8 月 21 日]) にアップグレードしようとすると問題が発生します。

このページのチュートリアルに従っています。

コードを機能させようとしていくつかの問題に遭遇しました。チュートリアルで宣言されているほど簡単ではありません。セッションを開くことはできますが、リクエストを機能させることができません。

- (IBAction)facebookTapped:(id)sender {
[FBSession openActiveSessionWithPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
    if(error) {
        NSLog(@"Error opening session: %@", error);
        return;
    }

    if(session.isOpen) {
        NSLog(@"session is open");

        FBRequest *me = [FBRequest requestForGraphPath:@"me"];
        [me startWithCompletionHandler:^(FBRequestConnection *connection,
                                         NSDictionary<FBGraphUser> *my,
                                         NSError *error) {
            NSLog(@"My name: %@", my.first_name);
        }];
    }

    }];
    }

FBRequest requestforGraphpath への呼び出しを削除すると、セッションが開いていることがコンソールに表示されます。そのままにしておくと、「'void(^)(struct FBRequestConection , struct NSDictionary , struct NSError*)' を初期化する互換性のないブロック ポインタ タイプです。'FBRequestHandler' が必要です」というエラーが表示されます。

ここで困惑したのは、これがチュートリアルに示されているコードとまったく同じであることです。ただし、[FBRequest requestForMe] を変更してさまざまなアプローチを試みました。どれも機能しませんでした。

誰かが私のためにこれに光を当てることができますか?

ありがとうございました。

4

1 に答える 1

7

次のチュートリアルで元のブロックを変更することで、この問題を解決できました。

if (session.isOpen) {
FBRequest *me = [FBRequest requestForMe];
[me startWithCompletionHandler: ^(FBRequestConnection *connection, 
                                  NSDictionary<FBGraphUser> *my,
                                  NSError *error) {
    self.label.text = my.first_name;
}];
}

if(session.isOpen) {   
        FBRequest *me = [FBRequest requestForMe];
        [me startWithCompletionHandler:^(FBRequestConnection *connection,
                                         id result,
                                         NSError *error) {
            NSDictionary<FBGraphUser> *my = (NSDictionary<FBGraphUser> *) result;
           NSLog(@"My dictionary: %@", my.first_name);
        }];
    }
于 2012-10-02T14:07:53.270 に答える