Objective c 在iOS 6上登录Facebook失败
当我尝试使用Facebook iOS SDK登录时,我收到错误消息,操作无法完成(com.Facebook.SDK错误2) 会话的状态为:FBSessionStateClosedLoginFailed 这是我现在的代码: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
-(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位,然后您将拥有一个完全有用的令牌。