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匹配。