Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
Ios Facebook权限崩溃_Ios_Objective C_Facebook_Permissions - Fatal编程技术网

Ios Facebook权限崩溃

Ios Facebook权限崩溃,ios,objective-c,facebook,permissions,Ios,Objective C,Facebook,Permissions,一旦用户已使用读取权限登录(这完全可以正常工作),我需要向他请求发布权限: NSArray *publishPermissions = @[@"publish_actions", @"user_photos"]; FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logInWithPublishPermissions:publishPermissions fromViewController:s

一旦用户已使用读取权限登录(这完全可以正常工作),我需要向他请求发布权限:

NSArray *publishPermissions = @[@"publish_actions", @"user_photos"];
    FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
    [login logInWithPublishPermissions:publishPermissions fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        NSLog(@"FB error: %@ || result: %@", error, result);
    }];
}
如果在给定的代码片段中,我只是要求执行
publish\u操作
一切正常,我得到了日志。如果我只需要
user\u照片
或两者都需要,应用程序将因常规
NSException
而崩溃


为什么
用户照片
会导致此类问题,以及如何使其正常工作?

更换此项。这在我的应用程序中运行良好

FBSDKLoginManager *login = [[FBSDKLoginManager alloc]init];
        [FBSDKAccessToken setCurrentAccessToken:nil];

        [login logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends",@"user_birthday"]
         fromViewController:self
         handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

             if ([FBSDKAccessToken currentAccessToken]) {
                 [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name,birthday,first_name,last_name,gender"}]
                  startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
                  {
                      if (!error)
                      {
}
                      else
                      {
                          NSLog(@"error : %@",error);
                      }
                  }];
             }
         }];

替换这个。这在我的应用程序中运行良好

FBSDKLoginManager *login = [[FBSDKLoginManager alloc]init];
        [FBSDKAccessToken setCurrentAccessToken:nil];

        [login logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends",@"user_birthday"]
         fromViewController:self
         handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {

             if ([FBSDKAccessToken currentAccessToken]) {
                 [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name,birthday,first_name,last_name,gender"}]
                  startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
                  {
                      if (!error)
                      {
}
                      else
                      {
                          NSLog(@"error : %@",error);
                      }
                  }];
             }
         }];

基于Facebook Swift实现,只有以
public
managed
开头的公共权限被处理,所有其他权限都会导致应用程序崩溃。

基于Facebook Swift实现,只有以
public
managed
开头的公共权限才会被处理,所有其他权限都会导致应用程序崩溃。

您可以从此代码获取所有内容:

{
NSString *getFbid;
 NSString *getFbFirstName,*getFBlastName, *getFbemail,*getfbBirthday,*getfbGender,*getFBpHone,*getFBlocation,*getFBcountry;

}



-(void)loginButtonClicked
{



FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
 logInWithReadPermissions: @[@"public_profile",  @"user_friends", @"email"]
 fromViewController:self
 handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
     if (error) {
         DLog(@"Process error======%@",error.description);
         indicators.hidden=YES;
         [indicators stopAnimating];
     } else if (result.isCancelled) {
         DLog(@"Cancelled");
         indicators.hidden=YES;
         [indicators stopAnimating];
     } else {

         if ([FBSDKAccessToken currentAccessToken]) {



             [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , gender ,friendlists"}]
              startWithCompletionHandler:^(
                                           FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                  if (!error)
                  {

                      //  NSLog(@"fetched user:%@", result);

                      // [self fetchingFacebookFriends];

                      [defFacebookData setObject:[result objectForKey:@"email"] forKey:@"fbEmail"];

                      [defFacebookData setObject:[result objectForKey:@"id"] forKey:@"fbID"];


                      //PASS ID
                      getFbid  = [result objectForKey:@"id"];
    NSLog(@"getFbid========>%@",getFbid);

                      //PASS FIRST NAME
                      getFbFirstName=[result objectForKey:@"first_name"];

    NSLog(@"first======>%@",getFbFirstName);

                      //PASS LAST NAME
                      getFBlastName=[result objectForKey:@"last_name"];
    NSLog(@"first======>%@",getFBlastName);

                      //PASS EMAIL
                      getFbemail=[result objectForKey:@"email"];
    NSLog(@"first======>%@",getFbemail);

                      //PASS PHONE
                      getfbGender=[result objectForKey:@"gender"];
    NSLog(@"first======>%@",getfbGender);


                      [defFacebookData setObject:[result objectForKey:@"name"] forKey:@"fbName"];

                      // Image
                      FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                                    initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"]
                                                    parameters:nil
                                                    HTTPMethod:@"GET"];
                      [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                                            id fbImageResult,
                                                            NSError *error) {

NSString *strURL = [NSString stringWithFormat:@"%@",[[fbImageResult objectForKey:@"data"] objectForKey:@"url"]];

    NSLog(@"strURL=====>%@",strURL);

[defFacebookData setObject:strURL forKey:@"fbImage"];

                          [defFacebookData synchronize];


                          NSDictionary *fbdict=[NSDictionary dictionaryWithObjectsAndKeys:getFbid,@"id",getFbFirstName,@"first_name",getFBlastName,@"last_name",getFbemail,@"email",getfbGender,@"gender",strURL,@"fbImage", nil];

                          NSLog(@"done=========>%@",fbdict);


                      }];
                  }
                  else{

                      DLog(@"error is %@", error.description);
                  }
              }];
         }
     }
 }];
}

您可以从以下代码获取所有内容:

{
NSString *getFbid;
 NSString *getFbFirstName,*getFBlastName, *getFbemail,*getfbBirthday,*getfbGender,*getFBpHone,*getFBlocation,*getFBcountry;

}



-(void)loginButtonClicked
{



FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
 logInWithReadPermissions: @[@"public_profile",  @"user_friends", @"email"]
 fromViewController:self
 handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
     if (error) {
         DLog(@"Process error======%@",error.description);
         indicators.hidden=YES;
         [indicators stopAnimating];
     } else if (result.isCancelled) {
         DLog(@"Cancelled");
         indicators.hidden=YES;
         [indicators stopAnimating];
     } else {

         if ([FBSDKAccessToken currentAccessToken]) {



             [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , gender ,friendlists"}]
              startWithCompletionHandler:^(
                                           FBSDKGraphRequestConnection *connection, id result, NSError *error) {
                  if (!error)
                  {

                      //  NSLog(@"fetched user:%@", result);

                      // [self fetchingFacebookFriends];

                      [defFacebookData setObject:[result objectForKey:@"email"] forKey:@"fbEmail"];

                      [defFacebookData setObject:[result objectForKey:@"id"] forKey:@"fbID"];


                      //PASS ID
                      getFbid  = [result objectForKey:@"id"];
    NSLog(@"getFbid========>%@",getFbid);

                      //PASS FIRST NAME
                      getFbFirstName=[result objectForKey:@"first_name"];

    NSLog(@"first======>%@",getFbFirstName);

                      //PASS LAST NAME
                      getFBlastName=[result objectForKey:@"last_name"];
    NSLog(@"first======>%@",getFBlastName);

                      //PASS EMAIL
                      getFbemail=[result objectForKey:@"email"];
    NSLog(@"first======>%@",getFbemail);

                      //PASS PHONE
                      getfbGender=[result objectForKey:@"gender"];
    NSLog(@"first======>%@",getfbGender);


                      [defFacebookData setObject:[result objectForKey:@"name"] forKey:@"fbName"];

                      // Image
                      FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                                                    initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"]
                                                    parameters:nil
                                                    HTTPMethod:@"GET"];
                      [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                                            id fbImageResult,
                                                            NSError *error) {

NSString *strURL = [NSString stringWithFormat:@"%@",[[fbImageResult objectForKey:@"data"] objectForKey:@"url"]];

    NSLog(@"strURL=====>%@",strURL);

[defFacebookData setObject:strURL forKey:@"fbImage"];

                          [defFacebookData synchronize];


                          NSDictionary *fbdict=[NSDictionary dictionaryWithObjectsAndKeys:getFbid,@"id",getFbFirstName,@"first_name",getFBlastName,@"last_name",getFbemail,@"email",getfbGender,@"gender",strURL,@"fbImage", nil];

                          NSLog(@"done=========>%@",fbdict);


                      }];
                  }
                  else{

                      DLog(@"error is %@", error.description);
                  }
              }];
         }
     }
 }];
}

电子战。我不想阅读用户配置文件。我想给它写信。这个答案毫无帮助。而且它与
用户照片
毫无共同之处!你读过这个问题了吗。我不想阅读用户配置文件。我想给它写信。这个答案毫无帮助。而且它与
用户照片
毫无共同之处!你看过问题了吗?这既不发表任何东西(都是GET),也不涉及图像的问题。你看过问题了吗?这既不发表任何东西(都是GET),也不涉及图像的问题。你看过问题了吗?你的回答不能解释这次车祸。发生崩溃的原因是iOS实现未读取
用户照片
权限请求。这是Facebook API中的一个bug(它至少应该返回一个错误,而不是崩溃)。你的答案不能解释崩溃。发生崩溃的原因是iOS实现未读取
用户照片
权限请求。这是Facebook API中的一个bug(它至少应该返回一个错误,而不是崩溃)。首先,您创建Facebook开发者帐户并获取API密钥该API密钥您必须添加project info.plist文件,获取Facebook SDK并将Facebook SDK包括到您的项目中,然后尝试此代码。首先,您创建Facebook开发者帐户并获取API密钥该API密钥您必须添加project info.plist文件并获取Facebook SDK并包括将Facebook SDK添加到您的项目中,然后尝试此代码。