FBSDKLoginManager logInWithReadPermissions: fromViewControll



我有一个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]是有效的(不是nil,并且在层次结构中有其视图(否则它会抱怨视图不在层次结构中,也尝试过))。

这在我的案例中起作用。

1 .在接口中创建FBloginManager实例

FBSDKLoginManager *manager

2 .初始化在ViewDidLoad。

manager = [FBSDKLoginManager new]
最后使用FBLoginManager的实例调用登录权限方法。

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

不可思议的是,我一直不明白为什么会这样。我使用调试器跟踪FBSDK代码,我发现的唯一(非常)神秘的问题是,从loginWithReadPermissions方法内部,fromViewController参数被设置为nil,即使我传递的是非nil值。<<em>奇怪/em>…

这是不太相关,但尝试分别创建FBSDKLoginManager对象,因为我已经做了同样的工作,为我。

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

相关内容

  • 没有找到相关文章

最新更新