0

私のアプリケーションはFacebookでのログインをサポートしていますが、ログアウトして再度ログインしても、資格情報の入力は求められません。iOS6でネイティブになるユーザー名ですぐにログインします。ネイティブのFacebookアプリケーションのようなものが欲しい: クリックすると

「notyou」をクリックすると、Facebookは新しいログイン画面を提供します。

私はこのチュートリアルに従いました

問題はここのどこかにあるようです:

- (void)openSession
{
    NSArray *permissions=[NSArray arrayWithObjects: @"publish_stream", @"publish_actions",@"create_event", nil];
   // [FBSession open]

    [FBSession openActiveSessionWithPublishPermissions:permissions
                                       defaultAudience:FBSessionDefaultAudienceEveryone
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {

         [self sessionStateChanged:session state:state error:error];
     }];
}


- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
    switch (state) {
        case FBSessionStateOpen: {
            NSLog(@"Sesstion opened");
            UIViewController *topViewController =
            [self.navController topViewController];
            NSLog(@"Class: %@", [[topViewController presentedViewController] class]);
            if ([[topViewController presentedViewController]
                 isKindOfClass:[LoginViewController class]])
            {
                [topViewController dismissViewControllerAnimated:YES completion:nil];
            }

                ViewController *basic=(ViewController*)topViewController;
                NSLog(@"Populating details");
                [basic populateUserDetails];



        }
            break;
        case FBSessionStateClosed:
        {
            NSLog(@"Session closed");
            [FBSession.activeSession closeAndClearTokenInformation];

        }

        case FBSessionStateClosedLoginFailed:

            NSLog(@"Login failed");
            [self.navController popToRootViewControllerAnimated:NO];

            [FBSession.activeSession closeAndClearTokenInformation];

            [self showLoginView];
            break;
        default:
            break;
    }

    if (error) {
        UIAlertView *alertView = [[UIAlertView alloc]
                                  initWithTitle:@"Error"
                                  message:error.localizedDescription
                                  delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];
        [alertView show];
    }
}
4

1 に答える 1

2

Facebook SDKがそれをサポートしているかどうかはわかりませんが、間違っているかもしれません。(私が理解しているように)Facebookログインにより、現在ログインしているFacebookユーザーがアプリにログインできるようになるという考え方です。Facebookに誰もログインしていない場合は、資格情報ページが表示されます。有効な資格情報を提供した後、ユーザーはFacebookにログインし、auth_tokenがアプリに送信されます。

重要なのは、現在Facebookにログインしているユーザーとは異なるユーザーを認証することはできないということです。そのためには、最初に現在のユーザーのログアウトが必要になります。Facebookは、この「ユーザーの変更」機能をFacebookアプリに残したいと考えています。

また、アプリからログアウトするとき、ユーザーはFacebookにログインしたままになることに注意してください。これは、Facebook認証を使用するWebサイトに適用されるポリシーとは異なります。その場合、ユーザーはサイトとFacebookの両方からログアウトする必要があります。

于 2013-01-02T22:39:35.943 に答える