Facebook SSO Not Logging In (isSessionValid return

2019-09-04 22:49发布

问题:

I am using Facebook Connect with my app. Everything is set up, all the code WAS working. Around yesterday, I could login with my app, then post stuff and other functions. I don't recall making any real changes. Now, as usual, whenever I press login and it goes to a Safari page where I have to confirm that I want to use this app and it says who I am logging in as. If I press ok it goes back to the app. During this whole process, in the app, Facebook never logs in. REMEMBER: JUST YESTERDAY THIS WORKS, I DONT RECALL MAKING ANY CHANGES! Here is how the connection starts:

-(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]) {
    [facebook authorize:nil];
  }    
  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self  selector:@selector(makeVisibleButtons) userInfo:nil repeats:NO];
  [timer setAccessibilityHint:@"timer"];
}

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // JUST SO THAT HANDLE URL CAN GET CALLED

 return YES;


}

So I press a button to call this IBAction. The NSTimer is not related, its just for the appearance of some buttons. Now, these two methods never get called (when I log it):

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
  ConnectToFB *connect = [[ConnectToFB alloc] init];
  return [connect.facebook handleOpenURL:url]; 
  NSLog(@"url");
  [connect release];
}

- (void)fbDidLogin {

  NSLog(@"log in");

  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
  [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
  [defaults synchronize];    
}

The app id is up to date and my url schemes in info plist is also up to date. What is the problem here?

回答1:

See this [enter link description here][1]

[1]: Story link flow using SSO facebook - openURL not being called .

You propably don't have facebook instance in AppDelegate