0

Facebookログインをアプリケーションに統合しています。ユーザーがログインできるようにしたいので、彼の誕生日と場所を取得します。

最新のFacebookSDKを入手して、アプリケーションに正常に追加しました。また、Facebookで新しいアプリケーションを作成し、アプリケーションに提供されたキーを追加しました。

「Facebookでログイン」ボタンを作成し、次のようにしました

ユーザーがボタンをクリックしたとき

// handler for button click
- (IBAction)facebookLoginTouched:(id)sender {
    [self openSessionWithAllowLoginUI:YES];
}

このメソッドは、ユーザーの許可を得るためにFacebookのログインページをユーザーに表示します

-(BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"user_location",
                            @"user_birthday",
                            nil];
    return [FBSession openActiveSessionWithReadPermissions:permissions
                                          allowLoginUI:allowLoginUI
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
                                         [self HandleLogin];
                                     }];
}

次に、ログインとアクセス許可が成功した場合

- (void)HandleLogin {
    if (FBSession.activeSession.isOpen) {
        //THIS IS NEVER REACHED

        [FBRequestConnection
         startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                       id<FBGraphUser> user,
                                       NSError *error) {
             //DO SOMETHING WITH THE USER INFO
         }];
    }
}

私の問題:

ボタンをクリックすると、Facebookページが正しく表示され、ユーザー名/パスワードを入力します。それは私を正しく記録し、私はアプリケーションが私の情報にアクセスすることを許可しました。終了すると、アプリに正常に戻ります。

ただし、コードが到達FBSession.activeSession.isOpenすると、falseが返されます。

正しくログインして許可を与えた後もセッションが閉じられるのはなぜですか?

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

2

Facebookアプリからの返品を処理するためのコードが欠落している可能性があります。アプリデリゲート実装ファイルに以下を追加します。

- (BOOL)application:(UIApplication *)application 
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    // attempt to extract a token from the url
   return [FBSession.activeSession handleOpenURL:url]; 
}
于 2012-11-14T21:26:31.907 に答える