iphone - Facebook Connect 登录问题

标签 iphone objective-c ios xcode facebook

我在我的应用程序中使用 Facebook Connect。一切都已准备就绪,所有代码都在运行。大约在昨天,我可以使用我的应用程序登录,然后发布内容和其他功能。我不记得做过任何真正的改变。现在,和往常一样,每当我按下登录按钮时,它都会转到一个 Safari 页面,我必须在该页面上确认我想使用这个应用程序,它会显示我正在以谁的身份登录。如果我按确定,它会返回到应用程序。在整个过程中,在应用程序中,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];
      }

所以我按下一个按钮来调用这个 IBAction。 NSTimer 没有关系,它只是为了一些按钮的外观。现在,这两个方法永远不会被调用(当我记录它时):

 - (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];

    }

我不明白为什么。特别是如果它以前工作过。你有什么想法吗?

最佳答案

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

关于iphone - Facebook Connect 登录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9698896/

相关文章:

ios - 如何在 UITableView 的编辑模式下启用滑动删除和删除按钮

ios - iOS 中的 GTLServiceDrive executeQuery 生成 unauthorized_client 错误

ios - 如何找到 ImageView 的半径?

iphone - iOS 上的 NSNetServiceBrowser/Bonjour 问题

iphone - MyApp “has active assertions beyond permitted time”崩溃-CoreLocationRegistration和CoreLocationBackgroundClient

ios - 尝试在 Simulator swift 中添加安装 Spotify

ios - YouTube 嵌入不适用于 iPhone ios <= 12

iphone - 如何获得任意控制 objective-c 的屏幕触摸位置?

objective-c - NS字典计数

c++ - xcode 6.x arm64 代码构建失败,没有任何编译或链接错误