Graph API: Automatizzazione dei post di Instagram con Android Studio

Finalmente Mark Zuckerberg ha accontentato noi sviluppatori rendendo possibile, solo da qualche settimana, la pubblicazione dei post su Instagram in modo programmatico. Tutto questo è possibile grazie all’ultima API rilasciata da Facebook chiamata Graph Api.

Come citato dal sito ufficiale, l’API Instagram Graph consente agli Instagram Professional, Business e Creator, di utilizzare l’app per gestire la propria presenza su Instagram.

Infatti l’interfaccia in questione può essere usata per ottenere e pubblicare contenuti multimediali, gestire e rispondere ai commenti sul proprio profilo, trovare contenuti multimediali con hashtag e ottenere metadati e metriche di base su altri account Instagram Business e Creator.


Ti informo che tramite Graph Api è possibile pubblicare un massimo di 25 post in 24 ore.
In questa guida ci concentreremo nello specifico di come pubblicare i post su Instagram da Android Studio.

Sei pronto? Iniziamo!

Imposta il tuo account Instagram Aziendale

Prima di tuffarci nella codifica, ci sono delle piccole procedure da eseguire per rendere conforme il tuo account Instagram con la Graph API. Infatti ti ricordo che per usare l’api bisogna disporre di un account Aziendale.
Se non sai come impostare il tuo profilo Instagram aziendale clicca qui.

Collegare una pagina Facebook al tuo account Instagram

Dopo aver impostato il tuo account Instagram, è importate collegare o creare una pagina Facebook collegata a tale account. Infatti senza quest’ultima non potrai eseguire i passaggi successivi.
Se non sai come collegare una pagina Facebook al tuo account Instagram clicca qui.

Creare un’app Facebook

Hai collegato correttamente la tua pagina Facebook al tuo account Instagram? Bene, ora è necessario creare un’app dalla dashboard della console di Facebook for Developers. Quindi clicca in alto a destra su ‘Le mie app‘ ed infine sul pulsante ‘Crea un’app‘:

Creare un'app Facebbok

Sulla schermata a pop-up che visualizzerai seleziona la voce ‘Azienda‘ e clicca su ‘Continua‘:

Creare un'app Facebbok

Nella schermate successiva inserisci il nome dell’app, in questo caso ho inserito ‘tecHelp‘, il tuo indirizzo email ed infine seleziona come scopo dell’app la voce ‘Tuo o della tua azienda‘:

Facoltativo: se disponi di un account Facebook con ruolo di Business Manager puoi collegarlo direttamente all’applicazione per ottenere statistiche più dettagliate.

Creare un'app Facebbok

Bene, ora non ti resta altro che cliccare sul pulsante ‘Crea app‘ per terminare la procedura.

Ottenere l’Access Token

Creata l’app sul pannello di Facebook for Developers, recati sulla pagina relativa al Tool di esplorazione per la API Graph. Dal menù in alto seleziona la voce ‘Strumenti‘ > ‘Tool di esplorazione per la API Graph‘.

Ottieni l'Access Token Facebook

Dal Tool che ti si presenterà, imposta nelle diciture:
App Facebook: l’app appena creata (nel mio caso ‘tecHelp’);
Utente o Pagina: Ricevi token.

Ottieni l'Access Token Facebook

Successivamente clicca su ‘Generate Access Token‘.

Al click ti si aprirà una pagina pop-up dove Facebook ti chiederà di attivare i permessi relativi all’app. Una volta accettato ti verrà generato il tuo Access Token (con durata di 1 ora).
Ora avrai un Token relativo solo al tuo account personale di Facebook.

Per ottenere il token relativo alla tua pagina, invece, è necessario impostare alla voce ‘Utente o Pagina‘ l’opzione ‘Ricevi token d’accesso alla Pagina‘:

Ottieni l'Access Token Facebook

Selezionando l’opzione, ti si aprirà in automatico un pop-up, dove dovrai selezionare la pagina Facebook da utilizzare, nel mio caso la pagina ‘Techelp‘:

Ottieni l'Access Token Facebook

Clicca su ‘Avanti‘ e dovresti visualizzare un messaggio che ti comunica che tutto è andato a buon fine.

Aggiungere i permessi Instagram al Token

Al Token generato mancano ancora dei piccoli permessi relativi alla gestione della pagina Instagram.
Aggiungi all’interno della voce ‘Autorizzazioni‘, i seguenti permessi:
• pages_show_list
• instagram_basic
• instagram_manage_comments
• instagram_manage_insights
• instagram_content_publish
• pages_read_engagement
• pages_manage_posts
.

Aggiungi i permessi Instagram al Token con Facebook for Developers

Clicca nuovamente sul pulsante in grande ‘Generate Access Token‘ e nella pagina di pop-up che ti si aprirà seleziona la pagina Instagram collegata all’account:

Aggiungi i permessi Instagram al Token con Facebook for Developers

Clicca su ‘Avanti‘ e ti si dovrebbe visualizzare una schermata simile:

Aggiungi i permessi Instagram al Token con Facebook for Developers

Ottenere l’ID del tuo account Instagram

Generato l’access Token, ora devi ottenere l’id del tuo account Instagram. Per farlo devi prima procurarti l’id della pagina Facebook a cui il tuo account Instagram è associato.
Quindi apri una nuova finestra dal tuo browser e vai all’url relativo alla tua pagina Facebook. Dalla home della pagina clicca su ‘Altro‘ e dal menù a tendina clicca su ‘Informazioni‘:

ID del tuo account Facebook

Scendi fino alla voce ‘ID della Pagina‘:

ID del tuo account


Bene!

Ora che conosci l’ID della tua pagina Facebook, ritorna sul Tool di esplorazione per la API Graph ed esegui una richiesta GET, formata dai seguenti campi:

ID Pagina Facebook + ?fields=instagram_business_account

ID del tuo account Instagram

L’ID della tua pagina Instagram è il risultato ottenuto dalla richiesta alla voce ‘instagram_business_account‘.

Automatizzare la Graph Api con Android Studio

Dopo aver eseguito correttamente tutti i passaggi precedenti, sei pronto per scrivere le prime righe di codice su Android Studio.
Prima di iniziare però, è importate avere chiaro il concetto di ‘Contenitore‘. Infatti per pubblicare un post in modo automatico sarà necessario inviare due richieste POST:
• La prima servirà a creare il Contenitore, ovvero una richiesta che conterrà l’URL dell’immagine da pubblicare, la descrizione e tutte le opzioni disponibili nel momento della pubblicazione;
• La seconda richiesta servirà proprio per pubblicare il relativo post.

Dopo questa piccolissima premessa vediamo insieme come automatizzare la Graph Api con Android Studio.

Innanzitutto aggiungi le seguenti dipendenze al tuo progetto nel file build.gradle:

implementation 'com.facebook.android:facebook-core:[8,9)'
implementation 'com.facebook.android:facebook-login:[8,9)'
implementation 'com.facebook.android:facebook-share:[8,9)'
implementation 'com.facebook.android:facebook-messenger:[8,9)'
implementation 'com.facebook.android:facebook-applinks:[8,9)'

In seguito modifica il file strings.xml e il manifest.xml seguendo questi passaggi:

  1. Apri il file /app/res/values/strings.xml.
  2. Aggiungi quanto segue:
<string name="facebook_app_id"> [Il tuo ID App] </string> <string name="fb_login_protocol_scheme">fb [Il tuo ID App] </string>

Il tuo ID App lo trovi nella dashboard di Facebook for Developers:

App Facebook for Developers

Nel mio caso l’ID App è 518692249508781, quindi nel file /app/res/values/strings.xml aggiungerò:

<string name="facebook_app_id">518692249508781</string> <string name="fb_login_protocol_scheme">fb518692249508781</string>
  1. Apri il file /app/manifest/AndroidManifest.xml.
  2. Aggiungi l’elemento uses-permission seguente prima del tag <application>:
<uses-permission android:name="android.permission.INTERNET"/>

Aggiungi l’elemento meta-data seguente all’interno del tag <application>:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <activity android:name="com.facebook.FacebookActivity" android:configChanges= "keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" /> <activity android:name="com.facebook.CustomTabActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="@string/fb_login_protocol_scheme" /> </intent-filter> </activity>

Ottimo, dopo che hai impostato correttamente il tuo progetto su Android Studio, il codice per pubblicare i post su Instagram è il seguente:

//Prima richiesta POST per creare il Contenitore
GraphRequest request = null;
try {
  request = GraphRequest.newPostRequest(
    AccessToken.getCurrentAccessToken(),
    "/ [ID Pagina Instagram] /media",
    new JSONObject("{" +
      "\"image_url\":\" [URL dell'immagine] \"," +
      "\"caption\":\" [Descrizione del Post] \"," +
      "\"access_token\":\" [Access Token] \" }"),
    new GraphRequest.Callback() {
      @Override
      public void onCompleted(GraphResponse response) {

        //Seconda richiesta POST per pubblicare il contenitore
        GraphRequest request = null;
        try {
          request = GraphRequest.newPostRequest(
            getCurrentAccessToken(),
            "/ [ID Pagina Instagram] /media_publish",
            new JSONObject("{\"creation_id\":\"" + response.getJSONObject().getString("id") + "\"," +
              "\"access_token\":\" [Access Token] \"}"),
            new GraphRequest.Callback() {
              @Override
              public void onCompleted(GraphResponse response) {
                System.out.println("Post pubblicato correttamente ;)");
              }
            });
        } catch (JSONException e) {
          e.printStackTrace();
        }
        request.executeAsync();

      }
    });
} catch (JSONException e) {
  e.printStackTrace();
}
request.executeAsync();

Nel codice sono presenti delle parti con le parentesi quadre il cui valore va sostituito con le informazioni della tua applicazione.

Per dubbi o problemi inerenti a tale procedura, non esitare a scrivere nel box dei commenti che troverai qui di seguito.