我正在开发允许用户通过Facebook登录的应用程序(使用Facebook SDK).当用户已经在iPhone设置中登录Facebook时出现错误.如果没有 – 都能正常工作.
NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",nil]; [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler: ^(FBSession *session,FBSessionState state,NSError *error) { [self fbSessionStateChanged:session state:state error:error]; }];
我已经设法将权限设置为nil数组 – 没有改变.
日志是:
Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0x1552c6c0 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError,com.facebook.sdk:ErrorSessionKey=<FBSession: 0xabe8100,state: FBSessionStateClosedLoginFailed,loginHandler: 0x0,appID: APPIDHERE,urlSchemeSuffix:,tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x14b8f3d0>,expirationDate: (null),refreshDate: (null),attemptedRefreshDate: 0001-12-30 00:00:00 +0000,permissions:(null)>}
有时,出现代码7的错误.我已经阅读了几乎所有与这个错误有关的话题.
我的步骤是:
>将.plist文件中的应用程序ID与FB bundle id进行比较.他们是一样的!!!
>我的应用程序不在沙箱模式!
>如果我从[FBSession openActiveSessionWithReadPermissions:权限]更改为[FBSession openActiveSessionWithPermissions:permissions-它可以工作.但它已被弃用.
解决方法
@H_502_21@ 是的,看到此错误后,如果您进入设置,您会看到这个应用程序的设置被关闭.但是在这种情况下,问题是用户从来没有被提示允许访问 – 即在第一次访问时设置被自动关闭.如果用户被问到,那么当然这是可以理解的,但事实并非如此(就好像SDK默默地按自己的不要允许).这就是为什么这是一个问题.在您进一步阅读之前,我想注意一旦设置设置,您不能简单地重复该过程进行测试,因为一旦设置设置,它将永远不会询问用户(即使删除并重新安装应用程序也没有帮助).要测试此问题,您需要重新设置权限,方法是转到设置 – >一般 – >重置 – >重置位置&隐私之前,您可以尝试再次复制.
从测试中,我发现如果您在第一次请求的权限中有offline_access,那么它将会提供此登录错误(并且不提示用户并将权限设置为OFF). SDK不会检查并告知您不允许此权限;它只是无法登录.