IOS中的Facebooklogin在模拟器上工作,但不能在安装了本地应用程序的设备上工作

面对以下问题:需要在IOS 7中执行Facebooklogin。在模拟器上正确执行,但在安装了本机应用程序的设备上运行时,会话不允许执行login。

使用代码创build会话: 在这里输入图像说明

checarLogin方法的工作原理是:

在这里输入图像说明

我已经search到了它,并发现控制Facebook应用程序权限的设备设置在两种情况下工作不同:

模拟器给予没有问题的许可:

在这里输入图像说明

下面的图片也是从模拟器中拿出来的,只是为了说明设备默认的工作方式:

在这里输入图像说明

所以问题是:在安装了本地Facebook应用程序的真实设备上运行时,还有其他方式来处理login,并且无需更改iphone设置就可以接受权限?

这是我在我的应用程序中使用的,你必须允许login界面。

- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI completionHandler:(FBSessionStateHandler)handler { // We pass this permissions array into our request. // I only request email, but there are many more options. // NSArray *permissions = @[@"email", @"basic_info"]; return [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:allowLoginUI completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { if (handler) handler(session, state, error); }]; 

}

这就是你如何使用它

  [self openSessionWithAllowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { if (!error && status == FBSessionStateOpen) { NSString *token = session.accessTokenData.accessToken; // You're logged in! } else { // Something wrong happened } }]; 

我遇到了类似的问题,这对我来说是有效的:

https://stackoverflow.com/a/12069251/2407717

一位同事改变了我们的一些项目设置,包括Bundle Identifier ,所以它不再与Facebook上的iOS Bundle ID匹配。