Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在iOS 6上登录Facebook失败_Objective C_Facebook_Ios6_Facebook Ios Sdk - Fatal编程技术网

Objective c 在iOS 6上登录Facebook失败

Objective c 在iOS 6上登录Facebook失败,objective-c,facebook,ios6,facebook-ios-sdk,Objective C,Facebook,Ios6,Facebook Ios Sdk,当我尝试使用Facebook iOS SDK登录时,我收到错误消息,操作无法完成(com.Facebook.SDK错误2) 会话的状态为:FBSessionStateClosedLoginFailed 这是我现在的代码: -(void) callFBService{ NSArray *permissions = [[NSArray alloc] initWithObjects:@"email, publish_stream, user_likes, friends_likes", ni

当我尝试使用Facebook iOS SDK登录时,我收到错误消息,操作无法完成(com.Facebook.SDK错误2)

会话的状态为:FBSessionStateClosedLoginFailed

这是我现在的代码:

-(void) callFBService{

    NSArray *permissions = [[NSArray alloc] initWithObjects:@"email, publish_stream, user_likes, friends_likes", nil];
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES
                              completionHandler:^(FBSession *fbsession,
                                                  FBSessionState status,
                                                  NSError *error) {
          if(error)
          {
              NSLog(@"Session error");
              [self fbResync];
              [NSThread sleepForTimeInterval:0.5];   //half a second
              [FBSession openActiveSessionWithReadPermissions:permissions
                                                 allowLoginUI:YES
                                            completionHandler:^(FBSession *fbsession, FBSessionState status, NSError *error) {
                                                [self sessionStateChanged:fbsession state:status error:error];
                                            }];

          }
          else
              [self sessionStateChanged:fbsession state:status error:error];

     }];
}
我在以下帖子中尝试了所有方法:


有什么想法吗???求你了

您正在以读取权限通过
publish\u stream
in,但
publish\u stream
是写入权限。它也不推荐使用(改用
publish\u actions
)。尝试删除该权限。在使用读取权限登录用户后,您需要单独请求该权限。请参阅SDK文档:


此外,还需要检查几件事:确保Facebook.com上的应用程序配置正确,包括包ID。确保您尝试登录的用户拥有该应用程序的权限(如果该应用程序处于沙盒模式,请确保该用户已添加为测试人员并已批准)。

我正在使用最新版本的SDK。此外,该应用程序是允许的(在设置/Facebook上),我将其更改为发布操作。不过我运气不好。还有其他想法吗?捆绑包ID是正确的。我在sandbox和live中都尝试了应用程序。您不能在该请求中使用
publish\u action
publish\u action
是写入权限,您在那里使用读取权限。您需要完全删除该权限,然后根据SDK在单独的请求中执行该操作。您是对的。我搬走了,它成功了(试了两天后)。谢谢你。现在我有一个新问题。我曾经获得一个令牌,允许我从后端服务器写入时间线。我现在怎么做呢???我过去常常在登录后将令牌发送到服务器。我现在想我不能这么做。你仍然可以这么做,但首先你需要在你的应用程序中执行第二个身份验证请求。您需要首先从Facebook SDK执行requestNewPublishPermissions位,然后您将拥有一个完全有用的令牌。