iOS: как получить сборщик фотографий из альбома Facebook

Предоставляет ли Facebook iOS SDK какой-либо альбом по умолчанию (Facebook) UIImagePickerController делает?

Я слышал об этом, поэтому долго искал, но ничего не смог найти.

Пожалуйста, дайте мне знать, если у кого-то есть мысли по этому поводу. Если это не так, то я, безусловно, должен сделать свой собственный.

2 ответа

Решение

Импорт из Facebook

без стороннего инструмента получите фотографии на Facebook из альбома Working For graph api 2.4, 2.5, 2.6,2.7,2.8 и Facebook graph api 2.10

1) Добавить приложение в аккаунт разработчика Facebook

2) затем выберите платформу в приложении для лучшего понимания см. Следующий снимок экрана

3) Выберите ios и следуйте всем шагам в мастере

4) затем перейдите к графику API изучить https://developers.facebook.com/tools/explorer/145634995501895/

5) выберите ваше приложение в графе api explorer.

6) Нажмите "Получить токен". Затем нажмите "Получить токен доступа" в поле "Получить токен". Вы можете увидеть множество разрешений для лучшего понимания.

7) Для проверки вашего разрешения на включение или выключение для получения названия альбома и изображений, отображаемых после снимка экрана

если разрешение user_photos не включено, то отобразится ошибка, см. следующий снимок экрана

После выполнения шага 7 либо перейдите к приведенным ниже шагам, либо просто загрузите файлы кодирования. Я поставил ссылку Где вы можете скачать

Кодирование файлов для цели c

https://www.dropbox.com/s/1ysek035ek88xuw/FacebookAlbum%20Demo.zip?dl=0

8) если не отображается сообщение об ошибке, следующий код в вашем методе viewDidLoad в view controller.this код для получения названия альбома и идентификатора альбома.

цель C

     FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];

    [loginManager logInWithReadPermissions:@[@"public_profile", @"email", @"user_friends",@"user_photos"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)

    {

        [[[FBSDKGraphRequest alloc]
          initWithGraphPath:@"me/albums"
          parameters: nil
          HTTPMethod:@"GET"]
         startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
             if (!error) {

               //  NSLog("%@",result);

                 NSArray *data = [result valueForKey:@"data"];


                 name = [data valueForKey:@"name"];

                 ids = [data valueForKey:@"id"];


                 [self.Fbtableview reloadData];


             }


         }];

9) теперь получаются фотографии обложки альбома следующего типа кода в ячейке таблицы для строки

цель C

 coverid = [NSString stringWithFormat:@"/%@?fields=picture",[ids objectAtIndex:indexPath.row]]; **// pass album ids one by one**


/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                              initWithGraphPath:coverid
                              parameters:nil
                              HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error)
 {

    // NSLog("%@",result);

     NSDictionary *pictureData  = [result valueForKey:@"picture"];

     NSDictionary *redata = [pictureData valueForKey:@"data"];

     urlCover = [redata valueForKey:@"url"];



     NSURL *strUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@",urlCover]];

     NSData *data = [NSData dataWithContentsOfURL:strUrl];
     UIImage *img = [[UIImage alloc] initWithData:data];
     UIImageView *img1;

     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
     {
         img1= [[UIImageView alloc]initWithFrame:CGRectMake(10, 0, 50, 50)];
     }
     else
     {
         img1= [[UIImageView alloc]initWithFrame:CGRectMake(10, 0, 40, 40)];
     }



     [img1 setImage:img];
     [img1 setContentMode:UIViewContentModeScaleAspectFit];
     [cell.contentView addSubview:img1];


 }];

10) Теперь код для получения идентификатора фотографии альбома.

 // code in **table didselect method**

цель C

   NSString *strAlbumid = [NSString stringWithFormat:@"/%@/photos",[ids objectAtIndex:indexPath.row]];



FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                              initWithGraphPath:strAlbumid
                              parameters:nil
                              HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {

    // NSLog("%@",result);
    NSDictionary *data = [result valueForKey:@"data"];

    arrId = [data valueForKey:@"id"];



    PhotoViewControllerr *photoViewcontroller;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        photoViewcontroller = [[PhotoViewControllerr alloc]initWithNibName:@"PhotoViewController_Ipad" bundle:nil];
    }
    else
    {
        photoViewcontroller = [[PhotoViewControllerr alloc]initWithNibName:@"PhotoViewController" bundle:nil];
    }


    photoViewcontroller.picsArray = arrId;

    [photoViewcontroller.navigationController setNavigationBarHidden:YES];




    [[self navigationController] pushViewController:  photoViewcontroller animated:YES];


}];

11) другой контроллер представления один теперь код для получения изображений в коллекцию просмотра cellforRow

цель C

NSString *strAlbumid = [NSString stringWithFormat:@"/%@/?fields=images",[self.picsArray objectAtIndex:indexPath.row]];



FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                              initWithGraphPath:strAlbumid
                              parameters:nil
                              HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error)
{

    //NSLog("%@",result);
    picture_images = [result valueForKey:@"images"];

    NSMutableArray *picCount = [picture_images objectAtIndex:picture_images.count - 1];



     NSURL *strUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@",[picCount valueForKey:@"source"]]];


    dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
    dispatch_async(q, ^{
        /* Fetch the image from the server... */
       NSData *data = [NSData dataWithContentsOfURL:strUrl];
         UIImage *img = [[UIImage alloc] initWithData:data];
         dispatch_async(dispatch_get_main_queue(), ^{

         if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
         {

         img1= [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
         }
         else
         {

         img1= [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
         }



         img1.image = img;
         img1.contentMode = UIViewContentModeScaleAspectFit;
         [cell.contentView addSubview:img1];

         });
         });



}];

12) После получения данных вы должны отправить свое приложение на Facebook, чтобы отправить, вы можете заполнить информацию в

1) детали приложения

2) статус и обзор

=====

Если у вас есть какие-либо вопросы, я помогу вам

наслаждайтесь счастливым кодированием.

Facebook iOS SDK пока не предоставляет такой возможности. Вместо этого я нашел сторонний класс, который делает то же самое. https://github.com/OceanLabs/FacebookImagePicker-iOS/

Другие вопросы по тегам