FBSDK无法读取配置文件信息,应用程序会忽略该算法

时间:2015-04-21 14:57:53

标签: ios objective-c facebook facebook-graph-api facebook-ios-sdk

我的应用程序有登录的FBSDK并获取用户个人资料的信息。登录工作很好,但在某些我想获取用户信息的地方,我的应用程序只是忽略代码并跳转到下一行。

这是我的登录算法:

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {
            // Process error
        } else if (result.isCancelled) {
            // Handle cancellations
        } else {
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if ([result.grantedPermissions containsObject:@"email"]) {
                // Do work
            }
        }
    }];

它的工作完美,我的问题是当我尝试使用以下算法获取当前用户的名称时:

if ([FBSDKAccessToken currentAccessToken]) {

        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error) {
                 NSLog(@"fetched user:%@", result);

                 _myUserName = result[@"name"];



             }



         }];
    }

使用调试我注意到应用程序只是忽略了这部分代码。

我有什么遗漏或做错了吗?

[EDITED]

登录也不起作用...使用下面的NSLogs,它们都没有在控制台中打印。

if (error) {
            // Process error
            NSLog(@"1");
        } else if (result.isCancelled) {
            // Handle cancellations
            NSLog(@"2");
        } else {
            NSLog(@"3");
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if ([result.grantedPermissions containsObject:@"email"]) {
                // Do work
                NSLog(@"4");
            }
        }

[EDITED2]

查看Facebook iOS SDK常见问题解答&故障排除我找到了这个解决方案

“FBSDKRequestConnection使用NSURLConnection,它需要一个活动的RunLoop。如果你在主线程之外使用它,你必须自己管理它。

或者,您可以在FBSDKRequestConnection上设置delegateQueue属性。“

所以,我只是使用

[self performSelectorOnMainThread:@selector(mySelector) withObject:nil waitUntilDone:YES];

现在没关系!谢谢!

1 个答案:

答案 0 :(得分:0)

查看iOS SDK v4.0的升级指南,您不应再使用/me调用了。相反,只需使用[FBSDKProfile currentProfile]即可。也就是说,您使用的代码也应该有效。你有断点,看看哪个部分实际被跳过了吗?