Iphone Facebook Connect登录问题

Iphone Facebook Connect登录问题,iphone,objective-c,ios,xcode,facebook,Iphone,Objective C,Ios,Xcode,Facebook,我正在使用Facebook连接我的应用程序。一切都设置好了,所有的代码都正常工作。大约在昨天,我可以用我的应用程序登录,然后发布东西和其他功能。我不记得做过任何真正的改变。现在,和往常一样,每当我按下login键,它就会进入Safari页面,在那里我必须确认我想使用这个应用程序,它会显示我是以谁的身份登录的。如果我按ok,它将返回应用程序。在整个过程中,Facebook从未在应用程序中登录。记住:就在昨天,我不记得做过任何改变!以下是连接的启动方式: -(IBAction)connectToFa

我正在使用Facebook连接我的应用程序。一切都设置好了,所有的代码都正常工作。大约在昨天,我可以用我的应用程序登录,然后发布东西和其他功能。我不记得做过任何真正的改变。现在,和往常一样,每当我按下login键,它就会进入Safari页面,在那里我必须确认我想使用这个应用程序,它会显示我是以谁的身份登录的。如果我按ok,它将返回应用程序。在整个过程中,Facebook从未在应用程序中登录。记住:就在昨天,我不记得做过任何改变!以下是连接的启动方式:

-(IBAction)connectToFacebook {

     [loginButton setImage:[UIImage imageNamed:@"LoginWithFacebookPressed@2x.png"] forState:UIControlStateNormal];
    facebook = [[Facebook alloc] initWithAppId:@"387500177929927" andDelegate:self];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) {
 facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
  facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }
  if (![facebook isSessionValid]) {
   NSArray *permissions = [[NSArray alloc] initWithObjects:
                    @"user_likes", 
                    @"read_stream",
                    nil];
  [facebook authorize:permissions];
   [permissions release];
    }

   NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self   selector:@selector(makeVisibleButtons) userInfo:nil repeats:NO];
      }
所以我按下一个按钮称之为iAction。NSTimer不相关,它只是一些按钮的外观。现在,这两个方法从未被调用(当我记录它时):


我不明白为什么。尤其是如果它以前工作过的话。你有什么想法吗?

Facebook API有
SSO(单点登录)
。因此,它将要求用户只登录一次。此登录在登录令牌过期之前有效。检查您的代码本身,确保您正在
NSUserDefaults
中存储您的
令牌和
过期时间。这将帮助API再次登录。如果您想确保您的应用程序登录功能是否正常工作,请从模拟器中删除您的应用程序,然后再次运行它。它将仅第一次询问您的登录凭据。希望你能理解。

hmmm。。我不完全理解。我遵循了官方教程中的确切步骤。。。无论如何。。。在我的代码中,NSUserDefaults看起来不像是添加了令牌和过期时间。你能查一下吗?我真的很抱歉,因为我是fb connect的新手itself@user1260708你对SSO有什么想法?SSO意味着一次登录。它是在facebook API中实现的。因此,它将要求用户仅第一次登录(不是每次用户单击登录按钮)。哦,好的,但是等等。。。。为什么我的代码不起作用。。。我还是不太明白@RA@user1260708嘿,你的代码100%运行良好。当NSUserDefaults具有值时,这些方法将不会得到调用。所以这并没有什么错。将NSLog放在方法中(它并没有运行),只需在模拟器中删除您的项目并再次运行。这是第一次只有它会打印在日志中。我真的很抱歉,但我不明白你要我做什么。你想让我记录在哪里?如果我的代码100%正常工作,为什么它不能像在模拟器中删除应用程序那样登录,运行项目并检查控制台中的“NSLog(@“handleOpenURL”);NSLog(@“log in”);”是否正常工作。@R.A是的,不正常。。。请返回聊天室为什么删除您的问题?像这样重新编辑,如此浪费的评论???因为我重新问过,那个人给了我一个正确的答案。对不起@R.A
 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
  return [self.facebook handleOpenURL:url]; 
NSLog(@"handleOpenURL");

   }

- (void)fbDidLogin {

  NSLog(@"log in");
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
  [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
   [defaults synchronize];

    }