2012-11-01 14 views
5

La mia applicazione ha funzionalità che inviano alcuni contenuti sul server e (hanno bisogno) di postarlo su Facebook. Usa il servizio per l'invio (per i dati del negozio sto usando sqlite). È possibile gestire le sessioni di Facebook e.t.c dal servizio? Ne ho bisogno perché il tempo in cui il contenuto verrà memorizzato nel DB e il tempo di invio può essere diverso (la connessione potrebbe essere persa per un tempo molto lungo e l'invio inizierà dopo la connessione sarà disponibile, ma solo il servizio di invio della mia applicazione sarà attivo in questo tempo). Non riesco a trovare alcuna soluzione per questo caso (e una buona soluzione sarà grandiosa). Per favore aiuto.Utilizzo di facebook android sdk dal servizio

risposta

4

Gli utenti devono concedere esplicitamente autorizzazioni all'applicazione e i servizi Android non supportano Activity.startActivityForResult(), quindi non è possibile aprire una sessione o aggiungere nuove autorizzazioni tramite reauthorize da un servizio.

Tuttavia, se si apre/reauthorize una sessione in una delle attività della propria app, lo stato della sessione viene salvato in SharedPreferences per impostazione predefinita. Se un servizio crea una sessione dopo che questo accade, finirà in SessionState.CREATED_TOKEN_LOADED. Se Session.getState() è CREATED_TOKEN_LOADED, la Sessione è garantita per essere in grado di openForRead() senza UI ed è legale passare un'attività Null. La sessione avrà tutte le autorizzazioni concesse che sono state salvate dalla tua attività.

Per semplificare tutto questo, il servizio può chiamare:

Session session = Session.openActiveSession(this); 

Questa chiamata restituisce null se non Token validi era in SharedPreferences.

Se l'interfaccia utente dell'applicazione dispone di un'area delle impostazioni, un modo semplice per ottenere il token memorizzato in primo luogo è includere un LoginFragment come uno dei pannelli delle impostazioni. Ciò consentirà agli utenti di accedere/disconnettersi e salvare lo stato della sessione in modo che il servizio possa prelevarlo se si trova nella stessa app.

Problemi correlati