IOS中的Facebook登录可以在emulator上工作,但不能在安装了本机应用程序的设备上工作

IOS中的Facebook登录可以在emulator上工作,但不能在安装了本机应用程序的设备上工作,ios,iphone,facebook,facebook-sdk-3.0,Ios,Iphone,Facebook,Facebook Sdk 3.0,面临以下问题:需要在IOS 7中执行Facebook登录。在emulator上运行正常,但在安装了本机应用程序的设备上运行时,会话不允许执行登录 使用代码创建会话: checarLogin方法的工作原理如下: 我在谷歌上找到了它,发现控制Facebook应用程序权限的设备设置在以下两种情况下的工作方式不同: Emulator授予无问题的权限: 下图也取自emulator,但只是为了说明设备的工作方式 默认情况下工作: 所以问题是:在安装了本机Facebook应用程序的真实设备上运行时,有

面临以下问题:需要在IOS 7中执行Facebook登录。在emulator上运行正常,但在安装了本机应用程序的设备上运行时,会话不允许执行登录

使用代码创建会话:

checarLogin方法的工作原理如下:

我在谷歌上找到了它,发现控制Facebook应用程序权限的设备设置在以下两种情况下的工作方式不同:

Emulator授予无问题的权限:

下图也取自emulator,但只是为了说明设备的工作方式 默认情况下工作:


所以问题是:在安装了本机Facebook应用程序的真实设备上运行时,有其他方法来处理登录,并使其接受权限,而无需更改iphone设置?

这是我在应用程序中使用的,您必须允许登录UI

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

            }
        }];

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


一位同事更改了我们的一些项目设置,包括包标识符,因此它与Facebook上的iOS包ID不再匹配。

谢谢!就是这样!