Autore Topic: Comunicazione con Facebook  (Letto 793 volte)

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Comunicazione con Facebook
« il: 17 Settembre 2014, 15:37:09 CEST »
0
Salve, scrivo qui perché non mi sembrava che le altre sezioni fossero adatte.

Nella app che sto creando ho la necessità di ottenere informazioni da una particolare pagina facebook pubblica e mi servivano consigli su come operare: quello che serve a me è poter leggere i post di questa pagina e gli eventi da essa creati.
Secondo voi è più sensato dialogare con l'app di Facebook oppure è abbastanza efficiente (e magari neanche troppo complicato) ottenere quei dati e gestirli?
Soprattutto poi avevo dubbi sulla gestione dell'account: non credo che Facebook mi consentirebbe di usare un solo account per l'app (nel senso che creo un account fantoccio dal quale tutti si collegherebbero), quindi credo che dovrei comunque abilitare l'accesso a Facebook nell'app.
Consigli?

Offline Illogica

  • Nuovo arrivato
  • *
  • Post: 32
  • Respect: +4
    • Google+
    • Mostra profilo
    • Illogica Software
  • Dispositivo Android:
    Caterpillar B15Q / Asus Padfone Infinity / Htc Pyramid / Samsung Galaxy *
  • Play Store ID:
    Illogica Software
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #1 il: 17 Settembre 2014, 19:12:45 CEST »
0
Avevo cominciato anch'io a pasticciare con le api di Facebook per Android ma poi non sono più andato avanti.
Il punto di partenza è sicuramente questa pagina: https://developers.facebook.com/docs/android/getting-started
E si, per quasi tutte le operazioni (tipo pescare i post da una pagina) ogni utente deve inserire le proprie credenziali Facebook.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Comunicazione con Facebook
« Risposta #2 il: 17 Settembre 2014, 19:33:18 CEST »
0
Ti rispondo io. Per usare FB con le api necessiti di avere un app FB creata da te con relativa chiave.  Se l'ap non è tua non ci fai niente.

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #3 il: 17 Settembre 2014, 19:59:33 CEST »
0
In che senso? Devo scrivermi una intera app per gestire i dati di Facebook?
Non posso semplicemente implementare il login e poi prendere giusto quel che mi serve?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Comunicazione con Facebook
« Risposta #4 il: 17 Settembre 2014, 20:06:05 CEST »
0
Se vai su fb devveloper puoi registrare un app. Cioe non devi fare niente a livello di codice. però fb ti impone l'uso di un app.

Un esempio. Faccio un app che scrive su un db delle parole. Ogni utente puo inserire le parole che vuole.
Ora come fai a diversificare un utente da un altro? Imponi un login con fb. Dunque devi andare su fb developer e creare un app col il nome che vuoi.
Ti verra data una chiave. Questa chiave andra nel tuo progetto della tua app (quella di android quindi)
Quando un utente clicca sul login blu, Puoi ricavare tramite codice tutto quello che vuoi della persona che fa il login. Quindi anche l'user id. Ora potresti usare questo user id come codice univoco nel tuo db. Spero di averti dato un esempio che si capisce.
Non puoi implementare un login nella tua app con fb, se non registri un app fb. E' gratis cmq

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #5 il: 17 Settembre 2014, 23:29:11 CEST »
0
Ah, capisco.
Domani vedrò un po' cosa riesco a fare. Grazie delle informazioni.

Post unito: [time]18 Settembre 2014, 15:20:15 CEST[/time]
Ho ottenuto la chiave di Facebook, ma non capisco cosa debba farci. È semplicemente associata al mio account? Perché non capisco dove debba usarla nel codice.

EDIT: rettifico, dovrei aver capito come fare
« Ultima modifica: 18 Settembre 2014, 15:37:56 CEST da Ilgard »

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #6 il: 20 Settembre 2014, 17:47:15 CEST »
0
Mi ritrovo con un problema: per abilitare la mia app per l'uso di Facebook necessito della key hashes di Android che non capisco come ottenere.
Ho provato ad usare il comando:
Codice: [Seleziona]
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64ma il risultato non va bene a quanto pare.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Comunicazione con Facebook
« Risposta #7 il: 20 Settembre 2014, 18:00:28 CEST »
0
È pieno di guide per trovarla. Seguile

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #8 il: 21 Settembre 2014, 10:36:08 CEST »
0
Ah, ho scoperto l'inghippo.
Non riuscivo ad andare avanti perché nelle guide dice di usare android come password. Questo va bene la primavolta, dopo si deve usare il nome del progetto usato su Facebook.

EDIT: Il login non mi funzionava quindi ho rimosso l'app ed ho riprovato a reinserirla.
Ho notato che qualunque password io inserisca, a parte casi rari come "android", il risultato è sempre lo stesso e sempre sbagliato. Prima penso che mi abbia preso la password per sbaglio.
« Ultima modifica: 21 Settembre 2014, 11:32:39 CEST da Ilgard »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Comunicazione con Facebook
« Risposta #9 il: 21 Settembre 2014, 11:08:39 CEST »
0
Non mi risulta niente di tutto ciò

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #10 il: 21 Settembre 2014, 11:49:03 CEST »
0
Ho cancellato il file debug.android, ho creato una nuova applicazione che esegue questo codice:
Codice (Java): [Seleziona]
PackageInfo info = getPackageManager().getPackageInfo("com.example.android.unipr", PackageManager.GET_SIGNATURES);
            for (android.content.pm.Signature signature : info.signatures){
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.v("tag", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
Mi restituisce il codice che ho già inserito su Facebook come codice sviluppatore.
Ho eseguito nuovamente il comando
Codice: [Seleziona]
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64Ho messo android come password e mi ha restituito un altro codice.
Nella pagina per l'abilitazione dell'app ho messo il codice ottenuto tramite app come codice sviluppatore (in realtà me l'ha messo lui in automatico), come Release Key Hash ho messo il codice ottenuto tramite comando sul terminale e comunque non me lo prende.
Sinceramente non capisco dove sia il problema.

Offline BlackJad

  • Utente junior
  • **
  • Post: 59
  • Respect: +6
    • Google+
    • michele-ziparo/4/825/a99/
    • blackjad82
    • Mostra profilo
    • Datawit Systems
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    Michele Ziparo
  • Sistema operativo:
    Windows 8.1
Re:Comunicazione con Facebook
« Risposta #11 il: 22 Settembre 2014, 07:51:56 CEST »
0
Esiste una libreria per Android che ti può semplificare la vita,  si chiama SimpleFacebook, cercala su github

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #12 il: 22 Settembre 2014, 15:09:53 CEST »
0
Ora provo un po', se riesco a farla funzionare allora continuo con quella, anche perché da Facebook mi servono pochi dati e di una pagina pubblica, quindi nulla di allarmante.
Se avessi capito come far funzionare i feed rss di Facebook avrei usato direttamente quelli.

Offline Ilgard

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia M
  • Sistema operativo:
    Ubuntu 14.04
Re:Comunicazione con Facebook
« Risposta #13 il: 24 Settembre 2014, 12:20:36 CEST »
0
Alla fine sono riuscito a risolvere i miei problemi su sito Developer di Facebook (altrimenti qualunque libreria sarebbe stata inutile) e sono tornato ad usare l'SDK ufficiale, solo che sto ammattendo per fare cose che, secondo me dovrebbero essere banali.
Il mio scopo è ottenere stati ed eventi creati da una pagina pubblica (che chiamerò pag).
Anche mettendo da parte gli eventi, il solo prendere gli stati sembra essere un casino. Ma non riesco a prendere nemmeno i miei di stati.
Devo usare una Request che ho così strutturato:
Codice (Java): [Seleziona]
Request r = new Request(
                        session,
                        "/me?fields=id",
                        null,
                        HttpMethod.GET  ,
                        new Request.Callback() {
                            public void onCompleted(Response response) {
                                Log.v(TAG, response.toString());
                            }
                        }
                    );
                r.executeAsync();
Dovrebbe restituirmi il mio ID, solo che mi da come errore:
Codice: [Seleziona]
Response: 
responseCode: 400,
graphObject: null,
error: {HttpStatus: 400,
     errorCode: 2500,
     errorType:
     OAuthException, errorMessage: An active access token must be used to query information about the current user.},
     isFromCache:false}

mentre se provo a richiedere i feed della pagina ottengo:
Codice: [Seleziona]
Response:
responseCode: 404,
graphObject: null,
error: {HttpStatus: 404,
      errorCode: 803,
      errorType: OAuthException,
      errorMessage: (#803) Cannot query users by their username (pag)},
      isFromCache:false}
usando come stringa "/pag/feed" al posto di "/me?fields=id" nella Request.

O sbaglio a fare le request, ma è così che sono descritte sulla documentazione, o c'è qualche altro passaggio di sicurezza che manca.

Post unito: 24 Settembre 2014, 16:03:17 CEST
Rettifico: forse ho capito la sintassi per eseguire le richieste, ma mi resta il problema dell'errore 803: non capisco come debba fare le richieste per una pagina (ho provato sia tramite l'username sia tramite l'id numerico).
« Ultima modifica: 24 Settembre 2014, 16:03:17 CEST da Ilgard, Reason: Merged DoublePost »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Comunicazione con Facebook
« Risposta #14 il: 24 Settembre 2014, 17:13:15 CEST »
0
usando simplefacebook o altre librerie è facile.hai provato?