Autore Topic: [Medio] Pubblicare messaggi sulla propria bacheca di Facebook (SDK 2.3)  (Letto 8587 volte)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 588
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Livello di difficoltà: medio
Versione SDK utilizzata: 2.3 (ma compatibile dalla 1.6)
Link al file compresso del progetto eclipse: file in allegato

Questo tutorial è stato aggiornato in base allo snippet di Nicola_D Facebook e Single Sign On, non vi disperate!

Il mio obbiettivo è quello di creare un'applicazione in grado di scrivere in modo autonomo sulla propria bacheca di Facebook per notificare, ad esempio, il raggiungimento di un particolare risultato.

Il codice presentato in questo tutorial è basato pesantemente sul lavoro di Steffen Luypaert "Adding Facebook integration to an Android application" che vi consiglio di consultare per ulteriori informazioni.

1 - Creazione dell'applicazione su Facebook

Il primo passo consiste nel creare un'applicazione su facebook tramite la pagina https://developers.facebook.com/apps/ selezionanto il tasto in alto a destra



La procedura è molto semplice e non richiede che un paio di passi.



E' importante prendere nota dell'ID dell'applicazione, che andremo poi a specificare nel nostro codice.

2 - Specifica della chiave hash dell'applicazione

Vedi anche il post Facebook e Single Sign On, non vi disperate! per maggiori dettagli.

E' necessario specificare la chiave hash della nostra applicazione in modo che Facebook accetti chiamate solo dalle applicazioni con la stessa chiave ed evitare che applicazioni di terze parti facciano altrettanto.

Nota: E' di fatto possibile omettere la specifica della chiave hash, ma in questo caso non è possibile usufruire del Single-Sign-On (SSO). Più avanti parlerò anche di questo caso.

La chiave hash di debug si ricava da riga di comando:

Codice (DOS): [Seleziona]
keytool -exportcert -alias androiddebugkey -keystore "<path>\debug.keystore" | openssl sha1 -binary | openssl base64
Specificando "android" come password.

Il risultato di questo comando è una stringa di 28 caratteri codificati in base64.

Il comando keytool si trova all'interno dell'sdk di java (nel mio caso C:\Programmi\Java\jdk1.6.0_21\bin) ed a meno che questo percorso non sia nel PATH è necessario lanciare il comando dalla cartella che lo contiene.

<path> è il percorso completo del file debug.keystore, che di solito si trova nella cartella .android presente nella propria cartella personale (nel mio caso C:\Documents and Settings\Ohmnibus\.android)

E' necessario ripetere la stessa procedura con il proprio keystore (ossia il file che viene utilizzato per firmare le propre applicazioni):

Codice (DOS): [Seleziona]
keytool -exportcert -alias <alias> -keystore <keystore> | openssl sha1 -binary | openssl base64
immettendo questa volta la password del proprio keystore.

Se usate windows è probabile che non venga riconosciuto il comando openssl, in tal caso potete scaricalo dal sito http://www.slproweb.com/products/Win32OpenSSL.html (io ho installato la versione Win32 OpenSSL v1.0.0d Light) ed installarlo dove preferite. Naturalmente i comandi openssl vanno preceduti dal path, che corrisponde alla cartella \bin contenuta nel percorso di installazione.

Queste due chiavi hash vanno immesse nella sezione "Mobile" alla voce "Chiave Hash"



Da notare che la chiave hash non dipende dall'applicazione ma dal keystore utilizzato per firmarla. Può essere quindi utile salvare la chiave hash di sviluppo per riutilizzarla in futuro su altre applicazioni Facebook.

3 - Inclusione della Facebook-Android SDK

A questo punto è il momento di iniziare a scrivere codice.

Al fine di questo tutorial creerò una semplice applicazione che mostra un banale tasto. Alla sua pressione verrà pubblicato un messaggio sulla propria bacheca eventualmente dopo un processo di autenticazione.

Ometto i passi per la creazione di un nuovo progetto, descritto fin troppo dettagliatamente nel tutorial dell'Hello World! presentato sul sito di Android (http://developer.android.com/resources/tutorials/hello-world.html). Nel mio caso il progetto è costituito da un'activity ed un file che ne definisce il layout.

File WallPost.java:
Codice (Java): [Seleziona]
package ohm.tutorial.WallPost;

import ohm.tutorial.WallPost.dialog.FBShareDialog;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class WallPost extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

File main.xml:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <Button
                android:id="@+id/btuShare"
               
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
               
                android:layout_centerInParent="true"
                 
                android:text="@string/btu_share"
                />
</RelativeLayout>

La prima cosa da fare è includere nel progetto l'SDK di Facebook reperibile all'indirizzo https://github.com/facebook/facebook-android-sdk/. Di questo pacchetto quello che veramente ci interessa è il contenuto delle cartelle \facebook\res (che contiene il logo di facebook) e \facebook\src (che contiene il codice vero e proprio), per cui copiamo il contenuto di queste cartelle nelle corrispondenti cartelle del nostro progetto.

Potrebbe essere necessario modificare il file FbDialog.java in modo che importi il namespace delle risorse dell'applicazione (nel mio caso ho dovuto aggiungere import ohm.tutorial.WallPost.R;).

4 - Activity per la gestione dell'SDK

Ora viene il pezzo forte, ossia la parte che interagisce con l'SDK vero e proprio. Aggiungete al progetto il seguente file.

File FBShare.java:
Codice (Java): [Seleziona]
package ohm.tutorial.WallPost;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;

import org.json.JSONException;
import org.json.JSONObject;

import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;
import com.facebook.android.Util;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;

public class FBShare extends Activity {
        private static final String APP_ID = "128820977203821";
        private static final String[] PERMISSIONS = new String[] {"publish_stream"};
       
        private static final String TOKEN = "access_token";
        private static final String EXPIRES = "expires_in";
        private static final String KEY = "facebook-credentials";
       
        private Facebook facebook;
        private String messageToPost;
       
        public static final String FIELD_MESSAGE = "facebookMessage";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                facebook = null; //Verrà inizializzato solo se necessario
                messageToPost = getIntent().getStringExtra(FIELD_MESSAGE);
                if (messageToPost == null){
                        messageToPost = "[empty]";
                }
               
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder
                        .setTitle(R.string.lbl_fb_post_title)
                        .setMessage(R.string.lbl_fb_post_message)
                        .setCancelable(false)
                        .setPositiveButton(R.string.lbl_yes, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        share();
                                }
                        })
                        .setNegativeButton(R.string.lbl_no, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        FBShare.this.finish();
                                }
                        });
               
                AlertDialog alert = builder.create();
                alert.show();
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
               
                if (facebook != null) {
                        facebook.authorizeCallback(requestCode, resultCode, data);
                }
        }

        protected void share(){
                facebook = new Facebook(APP_ID);
                if (! restoreCredentials(facebook)) {
                        loginAndPostToWall();
                }
                else {
                        postToWall();
                }
        }

        protected void loginAndPostToWall(){
                facebook.authorize(this,
                                PERMISSIONS,
                                //Facebook.FORCE_DIALOG_AUTH, //Decommentare per non usare il SSO
                                new LoginDialogListener());
        }

        protected void postToWall(){
                Bundle parameters = new Bundle();

                parameters.putString("message", messageToPost);

                ProgressDialog dialog = ProgressDialog.show(this,
                                "",
                                getResources().getString(R.string.lbl_fb_post_sending));

                //Effettua una richiesta asincrona verso Facebook
                AsyncFacebookRunner fbr = new AsyncFacebookRunner(facebook);

                fbr.request("me/feed", parameters, "POST", new WallPostRequestListener(), dialog);
        }

        protected boolean saveCredentials(Facebook facebook) {
                Editor editor = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
                editor.putString(TOKEN, facebook.getAccessToken());
                editor.putLong(EXPIRES, facebook.getAccessExpires());
                return editor.commit();
        }

        protected boolean restoreCredentials(Facebook facebook) {
                SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(KEY, Context.MODE_PRIVATE);
                facebook.setAccessToken(sharedPreferences.getString(TOKEN, null));
                facebook.setAccessExpires(sharedPreferences.getLong(EXPIRES, 0));
                return facebook.isSessionValid();
        }

        class LoginDialogListener implements DialogListener {
                public void onComplete(Bundle values) {
                        saveCredentials(facebook);
                        postToWall();
                }
               
                public void onFacebookError(FacebookError error) {
                        showToast(R.string.lbl_fb_auth_fail);
                        finish();
                }
               
                public void onError(DialogError error) {
                        showToast(R.string.lbl_fb_auth_fail);
                        finish();
                }
                public void onCancel() {
                        showToast(R.string.lbl_fb_auth_cancel);
                        finish();
                }
        }

        class WallPostRequestListener implements RequestListener {

                public void onComplete(String response, Object state) {
                        try {
                                //Controlla che nella risposta ci sia l'id del messaggio.
                                //In caso contrario il messaggio non è stato pubblicato.
                                JSONObject json = Util.parseJson(response);
                                final String id = json.getString("id");
                                if (id != null && id.length() > 0) {
                                        showToast(R.string.lbl_fb_post_ok);
                                } else {
                                        showToast(R.string.lbl_fb_post_fail);
                                }
                        } catch (JSONException e) {
                                showToast(R.string.lbl_fb_post_fail);
                                e.printStackTrace();
                        } catch (FacebookError e) {
                                showToast(R.string.lbl_fb_post_fail);
                                e.printStackTrace();
                        }
                        ((ProgressDialog)state).dismiss();
                        finish();
                }

                public void onIOException(IOException e, Object state) {
                        showToast(R.string.lbl_fb_post_fail);
                        e.printStackTrace();
                        ((ProgressDialog)state).dismiss();
                        finish();
                }

                public void onFileNotFoundException(FileNotFoundException e, Object state) {
                        showToast(R.string.lbl_fb_post_fail);
                        e.printStackTrace();
                        ((ProgressDialog)state).dismiss();
                        finish();
                }

                public void onMalformedURLException(MalformedURLException e, Object state) {
                        showToast(R.string.lbl_fb_post_fail);
                        e.printStackTrace();
                        ((ProgressDialog)state).dismiss();
                        finish();
                }

                public void onFacebookError(FacebookError e, Object state) {
                        showToast(R.string.lbl_fb_post_fail);
                        e.printStackTrace();
                        ((ProgressDialog)state).dismiss();
                        finish();
                }
        }

        protected void showToast(int resId){
                Message msg = Message.obtain(mHandler);
                msg.obj = resId;
                msg.sendToTarget();
        }

        protected Handler mHandler = new Handler() {
                public void handleMessage(Message msg) {
                        Toast.makeText(getApplicationContext(), (Integer)msg.obj, Toast.LENGTH_SHORT).show();
                }
        };
}

Modificare l'AndroidManifest.xml aggiungendo la dichiarazione dell'Activity:
Codice (XML): [Seleziona]
                <activity
                        android:name="ohm.tutorial.WallPost.FBShare"
                        android:theme="@android:style/Theme.Translucent.NoTitleBar" />

E modificate il file strings.xml aggiungendo le seguenti voci:
Codice (XML): [Seleziona]
    <string name="lbl_yes"></string>
        <string name="lbl_no">No</string>

        <string name="lbl_fb_post_title">Condividi su Facebook</string>
        <string name="lbl_fb_post_message">Pubblicare il messaggio sulla propria bacheca?</string>

        <string name="lbl_fb_auth_fail">Impossibile autenticarsi con Facebook.</string>
        <string name="lbl_fb_auth_cancel">Autenticazione con Facebook annullata.</string>

        <string name="lbl_fb_post_sending">Invio in corso...</string>
        <string name="lbl_fb_post_ok">Messaggio inviato.</string>
        <string name="lbl_fb_post_fail">Impossibile inviare il messaggio.</string>
        <string name="lbl_fb_post_cancel">Invio del messaggio annullato.</string>

Naturalmente è necessario modificare il valore di APP_ID in modo da rispecchiare l'id della nostra applicazione.

La descrizione dettagliata di quello che fa questa Activity è riportata nel lavoro citato per cui non mi dilungherò oltre in merito.
La differenza sostanziale dal lavoro di Steffen consiste nel fatto che viene utilizzata un'Activity invisibile che apre un AlertDialog, in modo da avere un Dialog dall'aspetto standard. Inoltra, cosa più importante, l'operazione non è interattiva (se non per l'inserimento delle credenziali). Nel tutorial di Steffen si usa infatti il metodo Facebook.dialog, che tra l'altro permette di modificare il testo prima di inviarlo. Ottimo per condividere uno stato, ma non adatto ai miei scopi.

La mia intenzione è invece quella di inviare un testo elaborato dall'applicazione senza possibilità di interazione, altrimenti l'utente potrebbe ad esempio modificare il punteggio raggiunto in un gioco.

A questo scopo ho utilizzato un AsyncFacebookRunner ed il metodo request che fa una richiesta POST a Facebook e restituisce informazioni in formato JSON che verranno opportunamente gestite.

Della risposta a noi interessa unicamente l'ID del messaggio appena pubblicato per sapere l'esito della richiesta: se tale ID esiste il messaggio è stato correttamente pubblicato, altrimenti qualcosa è andato storto.

5 - Chiamata per la pubblicazione del messaggio

Non ci resta che aggiungere il codice che fa uso del nostro FBShare alla pressione del tasto:

Codice (Java): [Seleziona]
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ((Button)findViewById(R.id.btuShare)).setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                Intent fbShareIntent = new Intent(WallPost.this, FBShare.class);
                                fbShareIntent.putExtra(FBShare.FIELD_MESSAGE, "ha appena creato un\'app che condivide messaggi su FaceBook.");
                                WallPost.this.startActivity(fbShareIntent);
                        }
                });
    }

ed ovviamente garantire i permessi per l'accesso alla rete nell'AndroidManifest.xml:

Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.INTERNET" />
Autenticazione ed autorizzazioni

Una volta cliccato il tasto (e dopo conferma) verrà postato un messaggio su Facebook. L'activity FBShare si occupa di verificare se l'utente è autenticato, eventualmente richiedendo i dati di accesso.

Se sul dispositivo è installato il client di Facebook, grazie al SSO verranno utilizzate le credenziali specificate nel client e questo passo verrà completato in automatico. Tuttavia se la chiave HASH dovesse risultare errata l'autenticazione via SSO fallirà.



Al primo accesso l'applicazione Facebook richiede inoltre l'autorizzazione a pubblicare messaggi sulla propria bacheca, iter comune a tutte le applicazioni che intendono pubblicare messaggi.



Dopo alcuni istanti vedremo infine apparire il messaggio sulla bacheca del nostro account.



Note
Durante la mia esperienza ho avuto modo di verificare un comportamento anomalo (o quantomeno curioso) nella procedura di Single-Sign-On (SSO). Questa procedura permetterebbe di saltare la fase di autenticazione a patto che sul dispositivo sia già installato un client Facebook nel quale è stato specificato il proprio account. Tuttavia in questa situazione (e SOLO in questa situazione) entra in gioco la chiave HASH dell'applicazione: nel caso risulti errata l'accesso fallisce e non è possibile inviare il messaggio. L'anomalia si verifica nei dispositivi dove il client NON è installato, in questo caso infatti la procedura di autenticazione procede normalmente ed il messaggio viene inviato anche se la chiave HASH è errata.
Nel tutorial la procedura di SSO è abilitata; nel caso vogliate scavalcarla è sufficiente decommentare la riga contenente il parametro Facebook.FORCE_DIALOG_AUTH.

Conclusioni
Siamo ora in grado di postare in automatico un semplice messaggio sulla propria bacheca. Non è un risultato colossale, ma pur sempre rappresenta una base per applicazioni più importanti. All'indirizzo https://developers.facebook.com/docs/reference/api/ sono descritte tutte le funzionalità offerte da Facebook, con un minimo di intraprendenza è possibile ottenere risultati ben più significativi.

Buon lavoro!

Riferimenti

Adding Facebook integration to an Android application &laquo; Integrating Stuff
Facebook e Single Sign On, non vi disperate! - Android Developers Italia
https://developers.facebook.com/docs/guides/mobile/#android
https://github.com/facebook/facebook-android-sdk/
https://developers.facebook.com/docs/reference/api/

Edit (12 Luglio 2011): Specificato SDK nel topic
« Ultima modifica: 21 Gennaio 2013, 10:08:14 CET da Ohmnibus »
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline Vlad

  • Utente normale
  • ***
  • Post: 271
  • Respect: +16
    • Github
    • Google+
    • vmihalachi
    • vmihalachi
    • Mostra profilo
    • vmihalachi.com
  • Dispositivo Android:
    Samsung galaxy s2 | Samsung galaxy tab 7
  • Play Store ID:
    Vlad Mihalachi
  • Sistema operativo:
    Windows 8
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #1 il: 01 Agosto 2011, 15:59:24 CEST »
0
Ciao gran bella guida :D per poter caricare le foto su facebook da un app le procedure saran diverse ma devo usare Sdk di facebook per farlo o ci sono altri metodi ? :-)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 588
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #2 il: 01 Agosto 2011, 16:05:41 CEST »
0
Ci sono sicuramente altri metodi ma direi che l'SdK ti semplifica notevolmente la vita.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline mikeblue

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • @MikeBlue3003
    • Mostra profilo
    • home page
  • Sistema operativo:
    Ubuntu 11.04, Windows 7
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #3 il: 18 Marzo 2012, 21:04:13 CET »
0
bella guida!!!

comunque, personalmente, ho trovato serie difficoltà a tirar fuori la chiave hash con windows.   :-P Alla fine ho usato linux dove, anche lì, ho l'ambiente di sviluppo.
Ho una domanda, forse banale, ma vorrei essere sicuro.

Se sviluppo l'app su windows e la firmo sempre con la medesima keystore, non dovrei aver problemi giusto?
"Si ha la sensazione che ogni qualvolta si esca di casa, al proprio ritorno ci sia un nuovo prodotto Google appena lanciato. " (Philipp Lenssen)

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 588
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #4 il: 18 Marzo 2012, 22:04:49 CET »
+1
Anche io ho avuto difficoltà con windows, ma alla fine ne sono venuto a capo.

Puoi sviluppare su qualsiasi ambiente purché la keystore sia la medesima, quindi no, non dovresti avere problemi.

Saluti.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline rossella.85

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Rossella Morgante
  • Sistema operativo:
    Ubuntu 11.10
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #5 il: 16 Aprile 2012, 14:56:21 CEST »
0
Complimenti, ottima guida... ma se volessi inserire anche il tasto condividi per google plus? sapere se esiste un tutorial simile?

Offline alanTuring

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    Windows 7
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #6 il: 18 Luglio 2012, 12:17:48 CEST »
0
Salve, ottimo tutorial ... ma non riesco bene a capire come, e se lo fa, quando si effettua la logout... Voi cosa mi consigliate di fare per gestire in automatico dopo la login la logout??

Grazie mille!!

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #7 il: 31 Luglio 2012, 16:10:05 CEST »
0
ciao una cosa vorrei capire, per creare la chiave hash si devono usare 2 diversi keystore, uno per fare le prove con eclipse e l' altro al momento della creazione dell' app stessa... quindi si deve cambiare anche nella pagina apposita di facebbok?
Mi pare che si sia un modo su Eclipse di usare sempre la chiave di rilascio...o sbaglio?
La domanda stupida è quella che non si fa

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 588
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #8 il: 31 Luglio 2012, 17:04:41 CEST »
0

E' passato un po' di tempo quindi non mi ricordo bene come funzionano le cose, ma mi pare che sulla pagina puoi specificare più di una chiave hash, quindi puoi mettere quella definitiva di rilascio e quella temporanea per lo sviluppo.

Personalmente preferisco sviluppare utilizzando una chiave temporanea.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline gsources75

  • Utente normale
  • ***
  • Post: 327
  • Respect: +9
    • Google+
    • pepigno75
    • devandroid_it
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Nexus S - Vodafone Smart -BB Bold- Iphone 4-
  • Play Store ID:
    Giuseppe+Sorce
  • Sistema operativo:
    Ubuntu-Windows Seven- Mac Lion
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #9 il: 31 Luglio 2012, 17:07:29 CEST »
0
si ma se rilasci l' app per dei test devi ricambiare.. cmq appena il cliente mi da accesso alla pagina dell' app creata vedo un po come funziona.

Per adesso grazie per il tutorial :)
La domanda stupida è quella che non si fa

Offline bleach96

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus Sol E730
  • Sistema operativo:
    Windows 7 Ultimate
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #10 il: 06 Settembre 2012, 13:38:41 CEST »
0
1) mi segna come errore questi import:

import com.facebook.android.AsyncFacebookRunner;
import com.facebook.android.AsyncFacebookRunner.RequestListener;
import com.facebook.android.DialogError;
import com.facebook.android.Facebook;
import com.facebook.android.Facebook.DialogListener;
import com.facebook.android.FacebookError;
import com.facebook.android.Util;

the import com.facebook cannot be resolved

2) come trovo l'APP_ID?

Offline AL92

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Google+
    • al92dev
    • Mostra profilo
    • al92dev.com
  • Dispositivo Android:
    Samsung Galaxy Note 2 / Asus Transformer Pad TF300T
  • Play Store ID:
    AL92 Developing ©
  • Sistema operativo:
    Mac OS X 10.8
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #11 il: 20 Gennaio 2013, 19:14:12 CET »
0
ragazzi ma questa guida è ancora valida per l'sdk 3.0? perchè non riesco proprio a farla funzionare, nonostante abbia seguito tutti i passaggi, l'applicazione mi chiede la condivisione, ma cliccando su "si" crasha

ho importato il package "facebook" in eclipse, esportato come libreria .jar, e importato nel progetto...gli import me li vede, ma l'applicazione crasha

mi dice anche che "Async Facebook Runner" è deprecato
« Ultima modifica: 20 Gennaio 2013, 19:22:45 CET da AL92 »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 588
  • Respect: +132
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (aggiornato)
« Risposta #12 il: 21 Gennaio 2013, 10:06:02 CET »
0
Il tutorial fa riferimento all'SDK 2.3

E' probabile che qualcosa sia cambiato, soprattutto se ti dice che l'"Async Facebook Runner" è deprecato.

Non saprei darti ulteriori suggerimenti se non cercare un tutorial scritto per l'SDK 3.0.
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline AL92

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Google+
    • al92dev
    • Mostra profilo
    • al92dev.com
  • Dispositivo Android:
    Samsung Galaxy Note 2 / Asus Transformer Pad TF300T
  • Play Store ID:
    AL92 Developing ©
  • Sistema operativo:
    Mac OS X 10.8
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (SDK 2.3)
« Risposta #13 il: 21 Gennaio 2013, 10:13:03 CET »
0
non c'è un modo per scaricare la 2.3? almeno per implementare questa funzionalità, poi con calma imparo ad utilizzare la 3.0, ma la 2.3 non riesco a trovara da nessuna parte  :-(

EDIT: ok, credo di aver risolto scaricando il file .zip che hai messo in allegato...utilizzerò l'sdk presente in quei file  :-)
« Ultima modifica: 21 Gennaio 2013, 10:14:51 CET da AL92 »

Offline MisterHide

  • Utente junior
  • **
  • Post: 65
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows XP
Re:[Medio] Pubblicare messaggi sulla propria bacheca di Facebook (SDK 2.3)
« Risposta #14 il: 30 Gennaio 2013, 14:40:02 CET »
0
Ciao a tutti
Qualcuno di voi potrebbe dirmi come implementare il logout?
Io non ci sono riuscito in nessun modo.
Vi prego aiutatemi, è da poco che cerco di sviluppare in Android e alcuni passaggi mi risultano molto ostici. :-(
grazie.