2015-05-13 16 views
10

Facebook SDK di iOS fornisce un valore predefinito (Facebook) album Il selettore di foto come UIImagePickerController fa?iOS: Come ottenere il selettore di foto dell'album di Facebook

Ho sentito di questo così cercato da lungo ma non riuscivo a trovare nulla.

Per favore fatemi sapere se qualcuno ha qualche idea su questo. Se non è così, allora dovrò sicuramente farmi da solo.

risposta

24

Importa da Facebook

senza strumento di terze parti ottenere un facebook le foto dell'album Funzionando Per grafico API 2.4, 2.5, 2.6,2.7,2.8 & Facebook grafico api 2,10

1) Aggiungere App Facebook account sviluppatore

2) scegliere la piattaforma di app per capire meglio vedere la seguente schermata

enter image description here

3) Scegli ios & seguire tutte Passo Display in guidata

4) poi andare per rappresentare graficamente api esplorare https://developers.facebook.com/tools/explorer/145634995501895/

5) selezionare l'applicazione nel grafico api Explorer Per ulteriori capire schermo girato

enter image description here

6) Fare clic su Get Token ..quindi clicca su accesso get a gettone, in farsi Token si può vedere così tanti perm issione per capire meglio vedere le immagini

enter image description here

7) per il controllo il vostro permesso o disattivare per ottenere il nome dell'album & immagini visualizzazione seguente schermata

enter image description here

se il permesso user_photos non è in poi visualizza errore vedi seguente schermata enter image description here

Dopo il completo ng passo 7 o vai per i passaggi successivi o scarica semplicemente i file di codifica. Ho messo link dove è possibile scaricare

file di codifica per c obiettivo

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

8) se non v'è alcuna indicazione di errore poi seguente codice nel tuo metodo viewDidLoad in vista controller.this codice per ottenere gli id ​​degli album nome album &.

obiettivo 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) ora ottenere foto di copertina dell'album seguente tipo di codice a cella Tableview per fila

obiettivo 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) ora codice per ottenere l'ID della foto dell'album.

// code in **table didselect method** 

obiettivo 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) un altro controllore guarda uno ora codice per ottenere immagini a collezione vista cellforRow

oggettivi 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) Dopo aver ottenuto informazioni Tu devi essere presentare la tua applicazione in Facebook per presentare è possibile riempire le informazioni in

dettagli 1) app

2) lo stato e la revisione

=====

Se avete qualsiasi domanda, allora io ti aiuterà a

codifica enjoy.happy.

+0

Grazie per questo, ma come posso accedere con un utente statico? – Skovie

+0

Voglio inserire un nome utente e una password manuel in modo che il mio controller di visualizzazione non mostri il popup di accesso, ma ottenga sempre gli album dalla pagina di Facebook che ho impostato. – Skovie

+0

Puoi condividere anche i file Swift. –

Problemi correlati