iOS: Cómo obtener el selector de fotos del álbum de Facebook

Resuelto Hemang asked hace 54 años • 2 respuestas

¿El SDK de Facebook iOS proporciona algún selector de fotos de álbum predeterminado (Facebook)UIImagePickerController como lo hace?

Escuché de esto, así que lo busqué durante mucho tiempo pero no pude encontrar nada.

Por favor, avíseme si alguien tiene alguna idea sobre esto. Si no es así, seguramente tendré que hacer el mío propio.

Hemang avatar Jan 01 '70 08:01 Hemang
Aceptado

Importar desde Facebook

sin herramienta de terceros, obtenga fotos de Facebook del álbum. Trabajando para Graph API 2.4, 2.5, 2.6, 2.7, 2.8 y Facebook Graph API 2.10.

1) Agregar aplicación en la cuenta de desarrollador de Facebook

2) luego elija la plataforma en la aplicación para comprender mejor, consulte la siguiente captura de pantalla

ingrese la descripción de la imagen aquí

3) Elija ios y siga la visualización de todos los pasos en el asistente

4) luego vaya a la API de gráficos para explorar https://developers.facebook.com/tools/explorer/145634995501895/

5) seleccione su aplicación en el explorador de API de gráficos para comprender mejor la captura de pantalla

ingrese la descripción de la imagen aquí

6) Haga clic en Obtener token... luego haga clic en obtener token de acceso en un token de obtención, puede ver tantos permisos para comprender mejor ver imágenes

ingrese la descripción de la imagen aquí

7) Para activar o desactivar su permiso para que se muestren el nombre del álbum y las imágenes a continuación de la captura de pantalla

ingrese la descripción de la imagen aquí

Si el permiso user_photos no está activado, se muestra el error, consulte la siguiente captura de pantalla. ingrese la descripción de la imagen aquí

Después de completar el paso 7, siga los pasos a continuación o simplemente descargue los archivos de codificación. He puesto enlace donde se puede descargar.

Archivos de codificación para el objetivo c.

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

8) Si no se muestra ningún error, siga el código en su método viewDidLoad en el controlador de vista. Este código para obtener el nombre y la identificación del álbum.

C objetivo

     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) ahora obtengo fotos de portada de álbum siguiendo el tipo de código en la celda de la vista de tabla para la fila

C objetivo

 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) ahora código para obtener la identificación de las fotos del álbum.

 // code in **table didselect method**

C objetivo

   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) otro controlador de vista, ahora código para obtener imágenes en la vista de colección cellforRow

C objetivo

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) Después de obtener los datos, debe enviar su aplicación en Facebook para enviarla, puede completar la información

1) detalles de la aplicación

2) estado y revisión

=====

Si tienes alguna consulta te ayudaré

disfrute.codificación feliz.

Maulik shah avatar Aug 03 '2015 13:08 Maulik shah

El SDK de Facebook iOS no proporciona tal cosa por ahora. En lugar de eso encontré una clase de terceros que hace exactamente lo mismo. https://github.com/OceanLabs/FacebookImagePicker-iOS/

Hemang avatar May 27 '2015 04:05 Hemang