1

我有一个启用 Facebook 登录的应用程序,由于某种原因FBSDKLoginManager logInWithReadPermissions: fromViewController: handler:,安装后第一次运行我的应用程序时没有调用它。如果我只是杀死我的应用程序(即使没有尝试登录 Facebook 或做任何事情:尝试在第一次打开时登录或不尝试登录不会改变任何东西)并再次打开它,它会完美运行。

为什么?

(我已经检查过传递给该方法的视图控制器不是 nil 并且是当前视图控制器)

这是我的登录代码:

+(void)loginWithFacebookWithCompletion:(ULCompletion)completion{
    [[[FBSDKLoginManager alloc] init] logInWithReadPermissions:FACEBOOK_READ_PERMISSIONS fromViewController:[ULMasterViewController instance] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if(result.token){
          ...
        }
[...]

其余的无关紧要,因为根本不调用完成块(即使有错误也没有)。我有FACEBOOK_READ_PERMISSIONS硬编码:

#define FACEBOOK_READ_PERMISSIONS (@[@"user_friends", @"user_birthday", @"email", @"user_photos"])

最后,[ULMasterViewController instance]是有效的(不是零,并且在层次结构中有它的视图(否则它会抱怨视图不在层次结构中,也尝试过))。

4

3 回答 3

3

这在我的情况下工作。

1.在界面中创建FLoginManager的实例。

FBSDKLoginManager *manager

2. 在 ViewDidLoad 中初始化。

manager = [FBSDKLoginManager new]

3、最后使用FBLoginManager这个实例调用登录权限方法。

于 2016-10-17T15:09:45.063 回答
2

我遇到了这个确切的问题,这非常令人沮丧。修复它的关键是我的应用程序代码正在创建大量同时存在的 FBSDKLoginManager 对象。重构我的代码以使用单例共享实例(而不是到处运行[FBSDKLoginManager new])为我消除了这个错误/问题。

奇怪的是,我从来不明白为什么会这样。我使用调试器跟踪 FBSDK 代码,我发现的唯一(非常)神秘的问题是,从loginWithReadPermissions方法内部,即使我传入了一个非值 ,fromViewController参数也被设置为。奇怪...nilnil

于 2017-03-08T08:18:29.473 回答
0

这无关紧要,但尝试单独创建 FBSDKLoginManager 对象,因为我已经做过同样的事情并为我工作。

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
于 2016-10-18T05:50:26.287 回答