阻止应用使用Facebook单点登录?

时间:2014-03-05 18:54:45

标签: ios objective-c facebook

我已经接管了一个使用Facebook作为登录的应用程序。我想强制用户通过URL进入UIWebView。此外,当用户使用其他帐户(例如twitter)登录我们的应用程序时,但是想要通过Facebook共享,我希望用户通过UIWebView URL登录Facebook,而不是通过单点登录。

如果此人没有通过iPhone设置单点登录,那么应用就可以按照我的意愿运行(见上文)>设置> Facebook的。但是,如果用户已通过iPHone设置单点登录>设置> Facebook然后应用程序中断。我们收到的错误是应用程序需要在此处正式放入Facebook应用程序流程https://developers.facebook.com/apps

我们不想跳过Facebook的箍(图片,捆绑ID等等),所以我们宁愿强迫用户通过webview网页通过Facebook网页登录。

我可以阻止我的应用尝试在iPhone上使用单点登录吗?

1 个答案:

答案 0 :(得分:1)

这样做了。

[[FBSession activeSession] openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
            switch (status) {
                case FBSessionStateOpen:
                    // call the legacy session delegate
                    //Now the session is open do corresponding UI changes

                    self.facebookButton.selected = YES;
                    self.shareButton.enabled = YES;
                    self.shareUIButton.enabled = self.shareButton.enabled;
                    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kShouldPostToFacebookKey];

                    break;
                case FBSessionStateClosedLoginFailed:
                { // prefer to keep decls near to their use

                    // unpack the error code and reason in order to compute cancel bool
                    NSString *errorCode = [[error userInfo] objectForKey:FBErrorLoginFailedOriginalErrorCode];
                    NSString *errorReason = [[error userInfo] objectForKey:FBErrorLoginFailedReason];
                    BOOL userDidCancel = !errorCode && (!errorReason ||
                                                        [errorReason isEqualToString:FBErrorLoginFailedReasonInlineCancelledValue]);

                    // call the legacy session delegate if needed
                    //[[delegate facebook] fbDialogNotLogin:userDidCancel];
                }
                    break;

                default:
                    break; // so we do nothing in response to those state transitions
            }
        }];