1

我正在通过 facebook 在 ios 应用程序中集成登录,在该应用程序启动期间,我向用户显示警报,当用户单击警报视图上的 OK 按钮时,将向用户显示 FB 登录对话框。问题是当我单击主页按钮并重新启动应用程序以显示警报时,然后单击确定后不会向用户显示 facebook 登录对话框。我使用了 facebook ios sdk 3.0 和 xcode 4.5 gm。*有趣的是,当我从后台杀死应用程序时,一切正常。*以下是应用程序中的代码确实为 facebook 完成启动

if (!self.session.isOpen)
{
    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"user_likes",
                            @"read_stream",@"publish_stream",@"email",
                            nil];

    self.session = [[FBSession alloc] initWithPermissions:permissions];


    if (self.session.state == FBSessionStateCreatedTokenLoaded)

    {
        // even though we had a cached token, we need to login to make the session usable
        [self.session openWithCompletionHandler:^(FBSession *session,
                                                  FBSessionState status,
                                                  NSError *error) {
    }];
    }
}  

这是我在用户单击警报视图上的确定按钮时调用的方法

-(IBAction) facebookLogin
{

if (self.session.isOpen)
{
    [self.session closeAndClearTokenInformation];        
} 
else
{
    if (self.session.state != FBSessionStateCreated) {
        // Create a new, logged out session.
        self.session = [[FBSession alloc] init];
    }


    [self.session openWithCompletionHandler:^(FBSession *session,
                                              FBSessionState status,
                                              NSError *error) {
        if (error) {
            NSLog(@"dex is %@",error.description);
        }
    }];

    }
}
4

2 回答 2

0

在 Facebook开发人员上关注此文档。

它解释了如何处理登录和注销功能。正如它所说的那样实施,效果很好。您也可以使用最新的 3.1 sdk。

于 2012-09-27T16:58:38.507 回答
0

这是一个老问题,但无论如何。当我没有更新我的 AppDelegate 时,我也有同样的行为。迅速它应该是这样的:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}

func applicationWillResignActive(application: UIApplication) {

     FBSDKAppEvents.activateApp()
}

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Some code was here

    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
}
于 2015-10-20T13:58:16.647 回答