• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#030 -Integrare facebook nelle applicazioni iPhone e iPad [AGGIORNATO]

By Andrea Cappellotto | on 7 Aprile 2010 | 55 Comments
Senza categoria

Logo facebook La condivisione sui Social Network di informazioni, pensieri, fotografie e non solo è divenuto ormai un fattore di primaria importanza, che certo non possiamo trascurare neanche durante lo sviluppo di applicazioni iPhone e iPad. Facebook, Twitter, YouTube e recentemente Google + sono divenute, infatti, parole di uso comune, conosciute in tutto il mondo. Oggi, con una revisione completa di questo nostro tutorial di programmazione iOS, vedremo come integrare facebook nell nostre applicazioni iPhone e iPad, sfruttando le Graph API di facebook, molto più versatili e facili da utilizzare una volta capite le dinamiche rispetto al vecchio metodo di integrazione ormai superato, in modo tale da permettere agli utenti delle nostre app di condividere alcune informazioni direttamente dall’applicazione stessa alla propria bacheca personale.

Creare una nuova applicazione su Facebook

La prima cosa da fare è quella di creare la una nuova applicazione su Facebook che verrà associata alla nostra applicazione in via di sviluppo. Per far ciò accediamo semplicemente al pannello applicazioni dell’area developer di Apple (è richiesta la registrazione gratuita come developer su facebook):



Clicchiamo quindi su “+ Crea applicazione” e inseriamo il nome della nostra applicazione. Selezioniamo ora la lingua e accettiamo i termini di utilizzo. Inseriamo il codice captcha e le informazioni di base, infine salviamo.

L’applicazione su Facebook è pronta, l’unica cosa che ci servirà è la “chiave API” generata, che troviamo nel pannello delle nostre app.

Scaricare l’SDK facebook – Documentazione e progetto di esempio

Bene, abbiamo appena creato l’applicazione sul nostro account facebook, ora dobbiamo procedere con il download dell’SDK di facebook.

Per fare questo andiamo sulla sezione Mobile Apps del sito developer di facebook e cerchiamo la riga (poco dopo l’inizio del documento) con scritto “Clone the GitHub repository: git clone git://github.com/facebook/facebook-ios-sdk.git”, quindi clicchiamo sul link “GitHub repository” al suo interno. Si aprirà la pagina di GitHub con il progetto.



Clicchiamo su “downloads” e scarichiamo il progetto in formato .zip. Scompattiamolo ed entriamo nella cartella.



Al suo interno troveremo:

  • una cartella “sample”, contenente un esempio di applicazione;
  • la cartella “src”, ovvero l’SDK facebook vero e proprio;
  • una cartella “test” contenente i test case dell’SDK (che al momento a noi non interessa)

Per quanto riguarda la documentazione sul link precedente troverete anche una piccola guida su come utilizzare ed implementare le API. Questa guida ufficiale, a mio parere, pecca un po’ nell’importazione del progetto, parte che andremo a vedere insieme fra pochissimo.

Creare un nuovo progetto ed importare l’SDK facebook al suo interno

Finalmente iniziamo a mettere le mani sul nostro progetto. Per prima cosa creiamo una cartella sulla scrivania e diamole un nome, la nostra l’abbiamo chiamata “devAPPFacebook”. Questa cartella sarà il contenitore del nostro progetto da qui in avanti.

Apriamo Xcode, creiamo un nuovo progetto di tipo view-based e andiamo a salvarlo dentro la cartella appena creata.

Ritorniamo alla cartella “Facebook-ios-sdk” scaricata precedentemente da GitHub, apriamola e trasciniamo tutta la cartella “src” dentro la cartella principale del nostro progetto (devAPPFacebook). Dovremmo aver ottenuto, a questo punto, una cartella con un contenuto simile a quello mostrato in figura:



Perfetto, torniamo ad Xcode e tenendo aperta la finestra del finder con la cartella “src” trasciniamo all’interno del nostro progetto tutti i file tranne “facebook-ios-sdk.xcodeproj” e “facebook-ios_sdk_Prefix.pch”. Quando ci verrà chiesto se vogliamo copiare i file diciamo di no (niente spunta su “copy items into destination folder..”), clicchiamo quindi su finish e dovremmo ottenere una gerarchia simile alla seguente:



Portiamoci ora su “Build setting” del nostro progetto e cerchiamo la sezione “Search Path”. Facciamo doppio click su “Header Search Path”, quindi clicchiamo sul “+” e aggiungiamo questa stringa:

../src

Spuntiamo la voce “recursive” e proseguiamo.



Questo farà si che il nostro progetto sappia che dovrà cercare eventuali file di importazione della cartella “src” ricorsivamente.

Esistono molti modi di importare librerie e classi nei nostri progetti, noi ne abbiamo visto uno qui sopra, che è quello consigliato da facebook. Potreste provare a trascinare direttamente i file all’interno del progetto, senza creare la cartella “src” prima e modificare successivamente l’header “path file”. Molto probabilmente tutto funzionerà comunque. Insomma, ogni libreria ha il suo metodo di importazione quindi non posso affermare che questo sia il metodo migliore o l’unico, semplicemente ho preferito seguire le linee guida proposte da facebook.

Pubblicare un post sulla bacheca Facebook direttamente dalla nostra applicazione iOS

Eccoci finalmente alla parte più importante (e interessante) del nostro tutorial, ovvero vedremo ora come si usano queste Graph API, a parer mio, molto semplici da usare. Grazie infatti a poche righe di codice saremo in grado di creare quanto necessario, ovviamente una volta comprese le dinamiche di funzionamento e verificato il significato di tutti i parametri tramite la documentazione ufficiale facebook.

Importiamo “FBconnect.h” e settiamo i delegati:

#import 
#import "FBConnect.h"
@interface devAPPt100ViewController : UIViewController
{
    Facebook* _facebook;
    NSArray* _permissions;
}
@property(readonly) Facebook *facebook;

-(void)loginToFacebook:(id)sender;
-(void)publishStream:(id)sender;
-(void)uploadFoto:(id)sender;
@end

Vediamo cosa abbiamo appena fatto. Niente di complicato, abbiamo importato “FBConnect”, aggiunto i relativi delegati, dichiarato un oggetto di tipo Facebook e un array che conterrà i permessi della nostra applicazione e abbiamo infine dichiarato tre metodi che useremo rispettivamente per il login, per pubblicare un post e fare eventuale upload di una foto.

Passiamo ora alla parte più importante: l’implementazione dei metodi. Iniziamo creando una stringa statica che conterrà la nostra chiave API (quella ottenuta in fase di creazione della nuova app su facebook descritta ad inizio tuturial) e sintetizziamo l’oggetto facebook:

#import "devAPPt100ViewController.h"

static NSString* kAppId = @"251336734895447";

@implementation devAPPt100ViewController
@synthesize facebook = _facebook;

Passiamo al metodo “viewDidLoad” e modifichiamolo come segue:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    _permissions =  [[NSArray arrayWithObjects:
                      @"read_stream", @"publish_stream", @"offline_access",nil] retain];
    
    UIButton * btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btnLogin.frame = CGRectMake(100, 100, 70, 30);
    [btnLogin setTitle:@"Login" forState:UIControlStateNormal];
    [btnLogin addTarget:self action:@selector(loginToFacebook:) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:btnLogin];
    
}

Qui abbiamo inizializzato un array con gli stream che la nostra app andrà ad utilizzare.
Apriamo una piccola parentesi su questi “stream”. In pratica (e vi sarà capitato sicuramente usando applicazioni terze che si interfacciano a facebook) quando volete postare da un’app specifica, la prima volta, vi viene chiesto di autorizzare l’applicazione stessa ad accedere ad alcuni contenuti del vostro profilo fb. Questi sono proprio definiti dagli stream. Il primo vi permetterà di avere le informazioni dell’utente ed i post pubblicati, il secondo di poter pubblicare post, commentare i post e mettere il famoso “mi piace” sui commenti, mentre il terzo vi permetterà l’accesso al profilo Facebook anche se l’utente non è connesso (per pubblicare link, ecc). Per ulteriori informazioni vi rimando a questo link che illustra e spiega il significato di tutti i tipi di stream esistenti.

Fatto questo occorrerà aggiungere un pulsante per fare il login dall’applicazione.

Vediamo il metodo di Login:

-(void)loginToFacebook:(id)sender
{
    _facebook = [[Facebook alloc] initWithAppId:kAppId];
    [_facebook authorize:_permissions delegate:self];
}

Queste due righe sono semplicissime per noi dev e hanno il compito di realizzare il login della nostra app.
Allochiamo l’oggetto Facebook con la chiave API che avevamo copiato precedentemente e chiediamo all’utente di autorizzare la nostra applicazione a pubblicare post e di accedere al nostro profilo.

Se provate ad eseguire l’applicazione a questo punto vedrete che, cliccando sul pulsante, si aprirà una view in cui vi viene chiesto di inserire “nome utente” e “password” per accedere al vostro profilo facebook e successivamente di accettare le condizioni dell’app e autorizzarla.

Nella seconda riga, passiamo come parametro l’array con gli stream e ovviamente il nostro delegato, così facendo avremo tre metodi che rispondo al login:

-(void)fbDidLogin
-(void)fbDidLogout
-(void)fbDidNotLogin:(BOOL)cancelled

Come da titolo ci notificano quando il login viene effettuato, quando l’utente si slogga oppure quando l’utente cancella la pagina di login e quindi decide di non accedere.

Passiamo all’implementazione del primo metodo:

-(void)fbDidLogin
{
    NSLog(@"utente loggato");
    
    UIButton * btnPost = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btnPost.frame = CGRectMake(100, 150, 70, 30);
    [btnPost setTitle:@"Post" forState:UIControlStateNormal];
    [btnPost addTarget:self action:@selector(publishStream:) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:btnPost];
    
    UIButton * btnUpload = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btnUpload.frame = CGRectMake(100, 200, 70, 30);
    [btnUpload setTitle:@"Upload" forState:UIControlStateNormal];
    [btnUpload addTarget:self action:@selector(uploadFoto:) forControlEvents:UIControlEventTouchDown];
    [self.view addSubview:btnUpload];
}

Semplicemente abbiamo aggiunto due bottoni, uno per pubblicare un Post, l’altro per fare l’upload di una foto

-(void)publishStream:(id)sender
{
    SBJSON *jsonWriter = [[SBJSON new] autorelease];
	
	//link del post
	NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys: 
														   @"devAPP.it",@"text", //nome link
														   @"http://www.devapp.it/",@"href", //collegamento link
														   nil], nil];
	
	
	NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];
	
    //immmagine post
	NSDictionary* media = [NSDictionary dictionaryWithObjectsAndKeys:
						   @"image", @"type", //tipo di media allegato (immagine)
						   @"http://www.devapp.it/wordpress/wp-content/uploads/logo_devAPP.png", @"src", //link dell'immagine
						   @"http://www.devapp.it/", @"href", nil]; //link a cui porta l'immagine se cliccata
	NSArray * arraymedia = [NSArray arrayWithObject:media];
	
	
	
	//collegamenti dell'immagine del post
	NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys:
								@"devAPP", @"name", //nome che compare vicino all'immagine
								arraymedia, @"media",
								@"Tramite devAPP.it per iphone", @"caption", //caption (parte in piccolo sotto l'iconcina della nostra app
								@"http://www.devapp.it/", @"href", nil];//link a cui posrta caption
	
	NSString *attachmentStr = [jsonWriter stringWithObject:attachment];
	
	
    //parametri post
	NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
								   kAppId, @"api_key", //chiave api
								   @"Share on Facebook",  @"user_message_prompt", //default. Si può modificare ma non ha rilievo per il post
								   @"Post di prova per devAPP", @"message", //messaggio di post (è l'unica cosa che l'utente può modificare prima del post)
								   actionLinksStr, @"action_links",
								   attachmentStr, @"attachment",
								   nil];
	
	[_facebook dialog: @"stream.publish"
         andParams: params
       andDelegate:self]; 
}

In questo metodo creiamo un oggetto JSON che ci servirà per contenere tutte le info del nostro Post.
Ho commentato ogni riga per farvi capire meglio come funzionano i parametri da utilizzare, naturalmente fate le opportune prove prima di rilasciare un applicazione che utilizzi Facebook.

  • Action link: è il link che compare vicino a Commenta
  • media: immagine che alleghiamo al nostro post (può essere anche un video). Comprende il tipo di media aggiunto, il link del media e il link a cui porta il media se cliccato
  • attachment: è il contenitore della nostra immagine con il titolo, il sottotitolo e il link a cui porta il sottotitolo
  • params: il contenitore di tutti i parametri definiti finora. Comprende la nostra chiave API, il messaggio visualizzato all’utente, i vari link, il media aggiunto e infine il messaggio vero e proprio

Nell’ultima riga diciamo all’oggetto facebook di utilizzare lo stream di pubblicazione con i parametri passati e sarà proprio quest’oggetto che si occuperà della pubblicazione del post.



Come effettuare l’upload di foto nel profilo facebook

Vediamo ora come effettuare l’upload di foto su facebook direttamente dalle nostre applicazioni iPhone e iPad. Andiamo a implementare il metodo “uploadFoto” dichiarato precedentemente:

-(void)uploadFoto:(id)sender
{
    NSString *path = @"http://www.devapp.it/wordpress/wp-content/uploads/logo_devAPP.png";
    NSURL *url = [NSURL URLWithString:path];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *img  = [[UIImage alloc] initWithData:data];
    
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   img, @"picture",
                                   nil];
    
    [_facebook requestWithGraphPath:@"me/photos"
                          andParams:params
                      andHttpMethod:@"POST"
                        andDelegate:self];
    
    [img release];
}

Questa porzione di codice è molto più semplice, in pratica inseriamo il link di un’immagine e diciamo che quei parametri devono essere inseriti nella sezione foto dell’account loggato con il metodo POST. Una precisazione: questo metodo non contiene alcuna conferma da parte dell’utente.

Anche qui abbiamo delle notifiche per l’avvenuto successo dell’upload:

- (void)request:(FBRequest *)request didLoad:(id)result
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error
- (void)dialogDidComplete:(FBDialog *)dialog

Che potete implementare per segnalare all’utente il successo o meno dell’upload di una foto.

Considerazioni finali

Come avete visto nell’esempio proposto in questo tutorial, non è poi così complesso postare un commento o fare upload di contenuti sul profilo utente facebook di chi utilizza la nostra applicazione. Potremo ovviamente andare oltre e ottenere particolari informazioni sull’utente e i suoi amici, ma per questo vi consiglio di guardare gli esempi forniti da facebook e la documentazione ufficiale.

Ne approfitto, prima di lasciarvi, per un’ulteriore piccola precisazione: quando l’oggetto facebook fa il login, controlla che sia installata l’app facebook per eventualmente prendere il suo token o, in alternativa, avvia safari per far eseguire il login all’utente. Sinceramente non ho capito molto questa mossa da parte delle API e la prima volta che ho avviato l’applicazione con il simulatore (non avendo installata l’app facebook) ha avviato safari crashando dopo aver fatto il login. Se vi dovesse succedere qualcosa di analogo andate sulla classe “Facebook.m” e nel metodo:

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth safariAuth:(BOOL)trySafariAuth

commentate l’if come mostrato nel seguente codice:

- (void)authorizeWithFBAppAuth:(BOOL)tryFBAppAuth
                    safariAuth:(BOOL)trySafariAuth {
  NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                 _appId, @"client_id",
                                 @"user_agent", @"type",
                                 kRedirectURL, @"redirect_uri",
                                 @"touch", @"display",
                                 kSDKVersion, @"sdk",
                                 nil];

  NSString *loginDialogURL = [kDialogBaseURL stringByAppendingString:kLogin];

  if (_permissions != nil) {
    NSString* scope = [_permissions componentsJoinedByString:@","];
    [params setValue:scope forKey:@"scope"];
  }

  if (_localAppId) {
    [params setValue:_localAppId forKey:@"local_client_id"];
  }
  
  // If the device is running a version of iOS that supports multitasking,
  // try to obtain the access token from the Facebook app installed
  // on the device.
  // If the Facebook app isn't installed or it doesn't support
  // the fbauth:// URL scheme, fall back on Safari for obtaining the access token.
  // This minimizes the chance that the user will have to enter his or
  // her credentials in order to authorize the application.
  BOOL didOpenOtherApp = NO;
  /*UIDevice *device = [UIDevice currentDevice];
  if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) {
    if (tryFBAppAuth) {
      NSString *scheme = kFBAppAuthURLScheme;
      if (_localAppId) {
        scheme = [scheme stringByAppendingString:@"2"];
      }
      NSString *urlPrefix = [NSString stringWithFormat:@"%@://%@", scheme, kFBAppAuthURLPath];
      NSString *fbAppUrl = [FBRequest serializeURL:urlPrefix params:params];
      didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
    }

    if (trySafariAuth && !didOpenOtherApp) {
      NSString *nextUrl = [self getOwnBaseUrl];
      [params setValue:nextUrl forKey:@"redirect_uri"];

      NSString *fbAppUrl = [FBRequest serializeURL:loginDialogURL params:params];
      didOpenOtherApp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:fbAppUrl]];
    }
  }*/

  // If single sign-on failed, open an inline login dialog. This will require the user to
  // enter his or her credentials.
  if (!didOpenOtherApp) {
    [_loginDialog release];
    _loginDialog = [[FBLoginDialog alloc] initWithURL:loginDialogURL
                                          loginParams:params
                                             delegate:self];
    [_loginDialog show];
  }
}

Così facendo verrà sempre chiamato il modulo di login con la webView.

Per qualsiasi problema vi invito a postare direttamente sul nostro forum, sarà più semplice per noi aiutarvi 😉

Buon lavoro e alla prossima!
Andrea Cappellotto

Se avete problemi con il progetto presentato, questo è il link per scaricare il nostro esempio completo.

Share this story:
  • tweet

Tags: facebook ipad sdkfacebook iPhone sdkfacebook xcodeintegrare facebook applicazioni iOSpost facebook da applicazione iphonepostare immagine facebook XcodeTutorial Pratici

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Author Description

Perito Elettrotecnico e studente di Scienze Informatiche presso l'università di Trento. Da inizio 2010 , dopo aver lavorato come sistemista-tecnico informatico, si occupa di programmazione in ambito iOS, collabora con un'azienda trentina nello sviluppo di applicazioni iOS per il turismo e realizza soluzioni personalizzate per aziende. Tra gli ultimi progetti ricordiamo l'integrazione tra iOS e Arduino segno che l'open source può benissimo lavorare con sistemi più chiusi come i device Apple! Per devAPP scrive tutorial sulla programmazione, da cosigli su strumenti da utilizzare per semplificare la programmazione, è inoltre moderatore del forum con all'attivo quasi mille post e partecipazioni giornaliere.

55 Responses to “T#030 -Integrare facebook nelle applicazioni iPhone e iPad [AGGIORNATO]”

  1. 7 Aprile 2010

    enzo

    è possibile avere il source code di questo progetto

  2. 7 Aprile 2010

    Alessandro

    Grande 😀
    Io avevo fatto una richiesta nell’altro topic dove parlavi di AdMob, se era possibile fare un tutorial secondo me utile, dove spieghi come realizzare una view stile Frasi di iSilvio, con due bottoni quindi che interagiscono con una TextView, a sua volta popolata da dati memorizzati in .plist

  3. 7 Aprile 2010

    Luigi

    E’ in programma, quanto prima sarà disponibile 😀
    Scusate ma in alcuni periodi non ho tantissimo tempo ed i tutorial sono un po piu lenti 😀

  4. 7 Aprile 2010

    Gino

    grande luigi, invece per la parte relativa alla parte server?

  5. 7 Aprile 2010

    Luigi

    Non c’è nessuna parte server
    E’ tutto gestito tramite Facebook con il developer Portal 😀

  6. 7 Aprile 2010

    bebus77

    ottima idea, ma io ho provato e compilando al punto in cui si importa dai file di FBConnect ( #import “FBConnect/FBConnect.h” ) mi da 104 errori. Ho seguito tutto attentamente ma non va. Qualcun’altro ha questo tipo di problema ? come posso fare per risolvere ?

    Grazie mille

  7. 7 Aprile 2010

    Luigi

    hai fatto qualche errore di inclusione ( o la parte del trascinamento della cartella da un progetto all’altro ) o l’inclusione dell’header ( fai bene attenzione a tutto )
    Saluti!

  8. 7 Aprile 2010

    Alessandro

    Dopo “Nota: facciamo attenzione che in alto, nel menù a tendina “Configuration” sia selezionato “All Configuration“:” credo che lo screen postato sia errato, o meglio è quello giù usato sopra 😀

    Ci sto provando e devo dire che sto trovando alcune difficoltà nell’importare il file zip nella directory e trasportare poi FBConnect in XCode, forse è poco chiaro, almeno per me. Non vuole essere una critica.. anzi 🙂

  9. 7 Aprile 2010

    Alessandro

    bebus77 :
    ottima idea, ma io ho provato e compilando al punto in cui si importa dai file di FBConnect ( #import “FBConnect/FBConnect.h” ) mi da 104 errori. Ho seguito tutto attentamente ma non va. Qualcun’altro ha questo tipo di problema ? come posso fare per risolvere ?
    Grazie mille

    Lo faceva anche a me, concordo con quello che dice Luigi. A me purtroppo ne da 1 di errore, che non mi fa aprire proprio il simulatore, ma forse sbaglio qualcosa quando inserisco l’indirizzo in Build. Vediamo se con lo screen corretto ci capisco qualcosa in più 😉

  10. 7 Aprile 2010

    bebus77

    grazie mille per la risposta ma ho riprovato tutto e fa lo stesso ;(
    se hai un attimo dai un’occhiata a queste screen che sono i tre passaggi fondamentali
    http://i39.tinypic.com/2hwpmjn.png
    http://i40.tinypic.com/4ij7r7.png
    http://i43.tinypic.com/17phzm.png

    grazie mille

  11. 7 Aprile 2010

    enzo

    bebus77 :
    ottima idea, ma io ho provato e compilando al punto in cui si importa dai file di FBConnect ( #import “FBConnect/FBConnect.h” ) mi da 104 errori. Ho seguito tutto attentamente ma non va. Qualcun’altro ha questo tipo di problema ? come posso fare per risolvere ?
    Grazie mille

    stessa cosa anche a me

  12. 7 Aprile 2010

    Alessandro

    bebu segui questo video non puoi sbagliarti:

    http://vimeo.com/3616452

    🙂

  13. 7 Aprile 2010

    Alessandro

    A me da solo un errore, nel PostToWall relativo al discorsoName. Mi dice discorsoName undeclared

  14. 7 Aprile 2010

    Alessandro

    Risolto dichiarando discorsoName nel .h
    A me funziona.. ora vedo come personalizzarlo con la mia app e togliere i riferimenti a imussolini 😉

  15. 7 Aprile 2010

    bebus77

    ho riprovato 7 volte, c’e’ qualcosa che sbaglio ecco i passaggi che faccio:
    – inserisco la directory nella cartella del mio progetto (Ciao>facebook-iphone>src)
    – apro il file .xcodeproj e trascino da li’ il Group FBConnect nel mio progetto
    – setto gli headers a ../facebook-iphone/src
    – importo il contenuto di FBConnect/FBConnect.h
    – buildo e mi da i soliti errori

    cosa sbaglio ? scusate per il disturbo ma sto quasi impazzendo 😀

  16. 8 Aprile 2010

    Luigi

    Attenzione al passaggio di settaggio degli headers, in alto il menu a tendina deve essere settato su “All Configuration”
    Per il percorso prova anche facebook-iphone/src senza ../ iniziale
    Fammi sapere 😀

  17. 8 Aprile 2010

    Luigi

    Alessandro :

    Risolto dichiarando discorsoName nel .h
    A me funziona.. ora vedo come personalizzarlo con la mia app e togliere i riferimenti a imussolini

    Per ringraziarmi potresti anche lasciare i riferimenti…pero vabbe ti faccio sconto mi basta il download 😀

  18. 8 Aprile 2010

    Maiuri Davide

    Dovete compilare in modalità Release.

  19. 8 Aprile 2010

    Alessandro

    Luigi :

    Per ringraziarmi potresti anche lasciare i riferimenti…pero vabbe ti faccio sconto mi basta il download

    Ehehe .. c’ho messo un pò a capire tutta quella stringa ma alla fine l’ho personalizzata come volevo io 😀

    “NSString *clearString = [discorsoName stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSLog(clearString);”

    Questa l’hai aggiunta te?

  20. 8 Aprile 2010

    Gino

    A me stranamento funziona tutto lato client, mentre lato server non riesco a far sottomettere l’applicazione a facebook.

    quando clicco su “Invia Ricette Romane alla Directory applicazioni” mi torna come errore: “Hai bisogno di avere almeno 5 utenti in totale o 10 utenti attivi ogni mese prima di poter inviare la tua applicazione.” e non so come chiedere agli altri di diventare utenti! questo passaggio (la pubblicazione della directory) é obbligatorio?

    ciao

  21. 8 Aprile 2010

    Fast

    io son riuscito a far funzionare il tutto, però alla fine ho 5 warning e dopo aver fatto l’accesso tramite il pop-up di facebook, la pagina si chiude e non pubblica nulla sulla bacheca

  22. 8 Aprile 2010

    Luigi

    Gino :

    A me stranamento funziona tutto lato client, mentre lato server non riesco a far sottomettere l’applicazione a facebook.
    quando clicco su “Invia Ricette Romane alla Directory applicazioni” mi torna come errore: “Hai bisogno di avere almeno 5 utenti in totale o 10 utenti attivi ogni mese prima di poter inviare la tua applicazione.” e non so come chiedere agli altri di diventare utenti! questo passaggio (la pubblicazione della directory) é obbligatorio?
    ciao

    Quello puoi anche evitare di farlo
    Basta che diventi tu fan della tua app e magari un amico ( io ho fatto con due persone )

  23. 8 Aprile 2010

    Luigi

    Alessandro :
    Ehehe .. c’ho messo un pò a capire tutta quella stringa ma alla fine l’ho personalizzata come volevo io
    “NSString *clearString = [discorsoName stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSLog(clearString);”
    Questa l’hai aggiunta te?

    Si ovviamente se devi pubblicare delle variabili fai attenzione a togliere gli spazi alle stinghe 😉

  24. 8 Aprile 2010

    Alessandro

    Dal simulatore pubblica tutto e va che una meraviglia. Porto su iPhone, ed appena si apre FB Connect si chiude. Bella storia 🙁

  25. 8 Aprile 2010

    Luigi

    A me funziona alla perfezione ed e già sulle mie app. Sono fuori per lavoro, appena torno vi faccio un sorgente demo 😉

  26. 8 Aprile 2010

    Alessandro

    Alessandro :

    Dal simulatore pubblica tutto e va che una meraviglia. Porto su iPhone, ed appena si apre FB Connect si chiude. Bella storia

    Pardon problema mio, non avevo attivata la connessione ad internet (disabilitata con un APN Fake).

  27. 8 Aprile 2010

    Fast

    Luigi :

    A me funziona alla perfezione ed e già sulle mie app. Sono fuori per lavoro, appena torno vi faccio un sorgente demo

    ok, almeno riesco a capire come mai non mi pubblica nulla sulla bacheca

  28. 8 Aprile 2010

    bebus77

    a me ora funziona tutto, dovevo solo levare “../” dagli headers. Comunque faro’ al piu’ presto un video-tutorial per spiegare come fare il tutto rendendo piu’ semplice il tutto, perche’ + che un cosa di codice da capire, e’ un fatto di fare tutti i passaggi correttamente !

    Grazie mille Luigi per il tutorial ed il supporto !

  29. 9 Aprile 2010

    Luigi

    bebus77 :

    a me ora funziona tutto, dovevo solo levare “../” dagli headers. Comunque faro’ al piu’ presto un video-tutorial per spiegare come fare il tutto rendendo piu’ semplice il tutto, perche’ + che un cosa di codice da capire, e’ un fatto di fare tutti i passaggi correttamente !
    Grazie mille Luigi per il tutorial ed il supporto !

    Figurati è un piacere condividere con voi la conoscenza e le ore di sbattimento 😀
    Se vi va di ringraziarmi scaricare qualcuna delle mie app, scegliete voi 😉

  30. 9 Aprile 2010

    Luigi

    Fast :
    ok, almeno riesco a capire come mai non mi pubblica nulla sulla bacheca

    Dipende anche da cosa vuoi pubblicare
    Mi raccomando se pubblichi una stringa elimina gli spazi residui prima di pubblicarla sulla bacheca altrimenti hai problemi

  31. 9 Aprile 2010

    Angelo

    Questi tutorial sono talmente belli da fare invidia!Grazie infinite per la cura che ci mettete…
    Un Italico sviluppatore in terra elvetica

  32. 9 Aprile 2010

    Gino

    Guarda, sono una schiappa con FB, non riesco a trovare il link o modo per far diventare fan qualcuno (men che men io stesso!).

    Un aiutino?

    Altrimenti non mi vede quel secret code e quella key, mentre mi si collega alla grande all’altra app di quel tizio dell’esempio FBConnect!

  33. 11 Aprile 2010

    Fast

    grazie luigi per l’aiuto, ora l’app funziona bene

  34. 11 Aprile 2010

    Luigi

    Gino :

    Guarda, sono una schiappa con FB, non riesco a trovare il link o modo per far diventare fan qualcuno (men che men io stesso!).
    Un aiutino?
    Altrimenti non mi vede quel secret code e quella key, mentre mi si collega alla grande all’altra app di quel tizio dell’esempio FBConnect!

    Va bene anche che sia solo tu fan.
    Non devi fare quella procedura di invio ma solo ottenere secret ed api key ed essere almeno tu fan dell’applicazione 😉

  35. 13 Aprile 2010

    iNoLogo

    Ciao, a me funziona tutto bene.
    Nel momento in cui ripeto l’operazione in un’altra vista non mi funziona più!

    Effetto il login e non mi fa fare la pubblicazione!

    come mai?

    grazie mille a tutti per la risposta!

  36. 14 Aprile 2010

    Luigi

    Sinceramente non ho provato ad implementarlo in piu viste nella stessa applicazione.
    Puoi provare a forzare il log-out nella prima vista ( una volta che ha effettuato il post sulla bacheca ) e provare se ti da problemi nell’altra vista
    Fammi sapere che altrimenti provo io
    Ciauu

  37. 26 Aprile 2010

    Francesco

    Ciao Luigi,
    grazie per i tuoi preziosi consigli.
    Mi chiedevo se fosse possibile inviare/leggere anche messaggi privati, e se fosse possibile leggere i messaggi presenti sul profilo dei nostri amici.

    Ciao e grazie
    Francesco

  38. 3 Maggio 2010

    Francesco

    Ciao Luigi,
    sto sbattendo la testa da giorni e giorni su una questione che però non riesco a risolvere.
    Mi servirebbe ottenere la lista di tutti gli album appartenenti ad un dato utente di facebook.

    Utilizzo le seguenti funzioni:

    -(void) getIdAlbum:(id)sender;
    {
    NSLog(@”getIdAlbum”);
    operazione=1;
    NSString* fql = [NSString stringWithFormat:@”SELECT name FROM album WHERE owner = %lld”, _session.uid];
    NSLog(@”%@”,fql);
    NSDictionary* params = [NSDictionary dictionaryWithObject:fql forKey:@”query”];
    [[FBRequest requestWithDelegate:self] call:@”facebook.fql.query” params:params];
    }

    e per gestire il result della request utilizzo:

    – (void)request:(FBRequest*)request didLoad:(id)result
    {
    NSLog(@”request didLoad”);
    if ([request.method isEqualToString:@”facebook.fql.query”])
    {
    NSLog(@”facebook.fql.query”);
    NSLog(@”resulset count %d”,[result count]);
    if(operazione==1)
    {
    NSArray* resulset = result;
    for(int i=0;i<[resulset count];i++)
    {
    NSDictionary* resulsetD = [resulset objectAtIndex:i];
    NSString* name = [resulsetD objectForKey:@"name"];
    NSLog(@"%@",name);
    }
    }
    }
    }

    Purtroppo c'è qualcosa che non va in quanto [result count] è sempre 0.

    Se lancio la query per recuperare la lista di amici di un determinato utente invece il tutto funziona.

    Ti chiedo gentilmente di darmi una mano, sono da giorni fermo su questo punto.

    Se ci fosse un modo per dialogare con te in real time te ne sarei grato.

    Ciao e grazie
    Francesco

  39. 5 Giugno 2010

    ignazioc

    c’è un piccolo problema, secondo le indicazioni date da questo articolo gli header non sono da ricercare su “../etc etc” ma piuttosto in “./etc etc”

  40. 5 Giugno 2010

    Placebo

    Ma scusate, io ho fatto un’app per iphone che genera scritte casuali.
    ora vorrei condividere queste scritte sulla bacheca di FB.
    devo registrare l’applicazione su fb?

  41. 30 Luglio 2010

    Adriano

    Ho un grandissimo problemone!!!
    Non riesco a postare su FB una variabile …. questa variabile è una stringa di testo caricata a caso da un file XML :
    [frase setText:[[NSString alloc] initWithFormat:@”%@%@”,frase2.text, string]]; }

    ma se metto la variabile come quella _facebookname non mi compare nulla sulla finestra di pubblicazione … altre volte, passandole ad un altra variabile mi da la scritta (null)…
    …… Le ho provate tutte 🙁 Tu consigli di eliminare gli spazi residui …ma cosa intendi?! Non sono cosi pratico dell’XCode c++ ecc…. tutto quello che so lo imparo dai vostri tutorial!!
    Spero in una risposta…grazie!!!

  42. 22 Settembre 2010

    Gianluca

    Ma non ho capito: discorsoName come va dichiarato? Anche io ho lo stesso problema!! T__T

  43. 7 Ottobre 2010

    filippo

    ciao. è possibile aggiungere alla mia applicazione la funzione di ricerca di persone in base al titolo di studio o agli interessi? facebook lo permette tramite query?

  44. 23 Giugno 2011

    Devil_Phoenix

    Ragazzi l’esempio sopra descritto sembra non essere più valido, Facebook a modificato le API, avete scaricato la SDK facebook-facebook-ios-sdk-fc1cde2 date un occhiata al codice demo allegato.

  45. 11 Agosto 2011

    Luca

    ottimo!!! pure io avevo avuto dei problemi per le API di facebook per lo sharekit, che da un giorno all’altro avevano smesso di funzionare

  46. 14 Agosto 2011

    imperiolini

    come faccio a personalizzare il bottone POST e mettere un desto di default da pubblicare? GRAZIE

  47. 22 Agosto 2011

    Dany

    Ciao, ho un problema con questo progetto.
    Ho seguito tutti i passi, ma quando mi esce la bella finestrella del login di facebook sul mio iphone e ci clicco per inserire user e psw non mi compare la tastiera … avete consigli?

  48. 28 Agosto 2011

    CIR

    perchè l’app mi termina con errore SIGABRT evidenziando

    _facebook = [[Facebook alloc] initWithAppId:kAppId];
    [_facebook authorize:_permissions delegate:self];

    ??

  49. 2 Settembre 2011

    Matteo


    CIR:

    perchè l’app mi termina con errore SIGABRT evidenziando

    _facebook = [[Facebook alloc] initWithAppId:kAppId];
    [_facebook authorize:_permissions delegate:self];

    ??

    Il problema è che sono leggermente cambiati i metodi… Adesso dovresti fare:


    _facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];
    [_facebook authorize:_permission];

    O almeno secondo me i metodi sono cambiati in questo modo.. Purtroppo a me non funziona lo stesso in quanto dopo aver autorizzato l’applicazione dall’iphone simulator mi dice che è impossibile collegarsi alla pagina facebook.com/connect/uiserver.php quindi non pubblica nessun post su facebook.. C’è qualcuno che ha una soluzione?

  50. 5 Dicembre 2011

    mario

    ciao, volevo segnalare che se volete fare il login o postare un post sulla bacheca direttamente dalla vostra app basta cambiare questa riga di codice da:
    [self authorizeWithFBAppAuth:YES safariAuth:YES];
    a
    [self authorizeWithFBAppAuth:NO safariAuth:NO];

    nei metodi:
    - (BOOL)handleOpenURL:(NSURL *)url
    e
    - (void)authorize:(NSArray *)permissions

    senza dover commentare l’altro metodo. così verrà sempre richiamata la webView invece dell’app di facebook o safari…

Newer Comments »

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO