私のアプリは、ユーザーがFacebookで認証できるようにするボタンを備えたモーダルUIViewを表示します。ユーザーがFacebookアプリに切り替えて認証を受け、アプリに送り返されたら、このモーダルビューを自動的に閉じます。
ユーザーが正常に認証されたことを通知してから、コントローラーを閉じるにはどうすればよいですか?
通知センターで何かするべきだと思いますが、どうなるかわかりません。
あなたがモーダルを提示していることを意味すると仮定すると、UIViewController
それは以下で却下することができます。
[self dismissViewControllerAnimated:YES completion:nil];
最後のFacebookSDKを使用していると仮定すると、アクションが正常に終了したら、却下を実装するだけで済みます。これは、コードを「-(void)fbDidLogin
デリゲートメソッド」に配置することによって行われます。
あなたappDelegate
はこれを行います:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[yourViewController facebook] handleOpenURL:url];
}
アプリデリゲートのこのメソッドで通知センターを使用した後、私はついにこれを取得しました。有効なセッションを取得すると、モーダルビューに通知を送信して却下するように指示します。
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
if (!error) {
// We have a valid session
NSLog(@"User session found");
NSDictionary *extraInfo = [NSDictionary dictionaryWithObject:@"FBLoginStatus" forKey:@"FBLogin"];
NSNotification *note = [NSNotification notificationWithName:@"FBLoginNote" object:self userInfo:extraInfo];
[[NSNotificationCenter defaultCenter] postNotification:note];
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
}