ios Facebook登录无效;

时间:2014-03-04 18:37:25

标签: facebook-login

Sandbox Mode=on   
Bundle ID =same FBid=Ok ..Anything else does not matter  

-(void) askForPublishPermission
{ BOOL isSessionActive = [self isFacebookSessionActive];
//BOOL useUI = !isSessionActive;
//useUI = YES;
BOOL publishPermissionAvailable = NO;

if (isSessionActive)
{
    NSArray* validPermission = [[FBSession activeSession] permissions];


    for (int i=0; i<[validPermission count]; i++)
    {
        NSObject* permission = [validPermission objectAtIndex:i];

        if ([permission isKindOfClass:[NSString class]])
        {
            NSString* validPermission = (NSString*)permission;
            //NSLog(@"Valid Permissions = %@", validPermission);
            if ([validPermission isEqualToString:@"publish_actions"])
            {
                publishPermissionAvailable = YES;
                break;
            }
        }
    }
}

if (publishPermissionAvailable == YES)
{
    //NSLog(@"------------------ CALL AT TWO --------------");
    //NSLog(@"Login Success");
}
else // Request for publish permission.
{
    NSArray* permissionArray = [NSArray arrayWithObjects: 
                                @"publish_actions",nil];
    [FBSession openActiveSessionWithPublishPermissions:permissionArray
                                       defaultAudience:FBSessionDefaultAudienceEveryone
                                          allowLoginUI:YES
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
                                         [self sessionStateChanged:session
                                                             state:state
                                                             error:error];
                                     }];



  }
}

-(void) askForPublishPermission
{
BOOL isSessionActive = [self isFacebookSessionActive];
//BOOL useUI = !isSessionActive;

//useUI = YES;
BOOL publishPermissionAvailable = NO;

if (isSessionActive)
{
    NSArray* validPermission = [[FBSession activeSession] permissions];


    for (int i=0; i<[validPermission count]; i++)
    {
        NSObject* permission = [validPermission objectAtIndex:i];

        if ([permission isKindOfClass:[NSString class]])
        {
            NSString* validPermission = (NSString*)permission;
            //NSLog(@"Valid Permissions = %@", validPermission);
            if ([validPermission isEqualToString:@"publish_actions"])
            {
                publishPermissionAvailable = YES;
                break;
            }
        }
    }
}

if (publishPermissionAvailable == YES)
{
    //NSLog(@"------------------ CALL AT TWO --------------");
    //NSLog(@"Login Success");
}
else // Request for publish permission.
{
    NSArray* permissionArray = [NSArray arrayWithObjects: 
                                @"publish_actions",nil];
    [FBSession openActiveSessionWithPublishPermissions:permissionArray
                                       defaultAudience:FBSessionDefaultAudienceEveryone
                                          allowLoginUI:YES
                                     completionHandler:^(FBSession *session,
                                                         FBSessionState state,
                                                         NSError *error) {
                                         [self sessionStateChanged:session
                                                             state:state
                                                             error:error];
                                     }];



  }
}

但..没有登录..

错误代码见下文:

Error = Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.){com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts Code=7 "The Facebook server could not fulfill this access request: The app must ask for a basic read permission  like email at install time."

我花了几个月这个问题..请帮助我

2 个答案:

答案 0 :(得分:0)

您的错误消息显示:

  

应用程序必须在安装时请求基本的读取权限,例如电子邮件。

来自the docs

  

当有人使用Facebook登录连接应用时,该应用可以访问他们的公开个人资料和朋友列表,这些信息对每个人都是可见的。要创建此基本连接,应用必须始终通过要求basic_info权限请求访问某人的基本个人资料信息。

尝试将basic_info添加到permissionArray数组。如果这不起作用,请尝试添加email

答案 1 :(得分:0)

我换了:

[FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:stateHandler];

[FBSession openActiveSessionWithPublishPermissions:@[@"basic_info", @"publish_actions", @"email"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:YES completionHandler:stateHandler];

现在它正在工作

(权限令很重要,basic_info必须处于第一位置)