2013-05-20 10 views
9

Se sto creando un'app per Android che utilizza l'SDK di Facebook e ha anche un'app Web che ha la maggior parte delle stesse funzionalità, come dovrebbe l'app Android gestire le azioni sociali? Dovrebbe inviare richieste direttamente all'API di Facebook tramite l'SDK o postarlo sul server dell'app Web tramite la mia API e consentire all'app Web di effettuare la richiesta a Facebook per conto dell'app Android? La maggior parte degli esempi di Facebook per Android utilizza l'approccio precedente, ma nessuno discute esplicitamente la procedura migliore quando esiste un back-end web che avrà le stesse funzionalità sociali dell'app Android.Le app Android con componente lato server possono accedere direttamente a Facebook?

+0

Non instradare i dati dell'utente attraverso il tuo web-app è una violazione della politica di Facebook: "Non devi includere funzionalità che generano proxy, richieste o raccolgono nomi utente o password di Facebook." Se è così allora tutte le altre considerazioni sarebbero punti controversi. – Kai

+0

No, penso di non essere stato abbastanza chiaro. Intendo dire il proxy di cose come ottenere l'elenco di amici dell'utente facendo una richiesta a http: //myserver/friends.php e usando l'output piuttosto che usare la libreria nativa di Android. Questo metodo di proxy sembra essere consentito, sulla base degli esempi di Facebook. –

+0

Non è consentito chiedere o salvare le password. Proxying significa prendere la password degli utenti e inviarla a FB. È necessario utilizzare la finestra di dialogo dell'autorizzazione FB e ottenere un token che consente di effettuare richieste per conto dell'utente, e si è persino autorizzati a memorizzare quel token per un uso successivo (ma scadrà dopo un po 'di tempo) – joerx

risposta

2

Ho messo la mia mente in un problema simile prima. Era un'app PHP, ma essenzialmente la scelta progettuale era quella di mettere l'interazione FB nel frontend (JS-SDK) o nel backend e proxy it (PHP-SDK). Purtroppo non ho trovato molte indicazioni, quindi ho dovuto prendere una decisione.

Come spesso non sembra esserci una risposta per-se, dipende da ciò che si sta facendo con FB e dalla sua profondità di integrazione con qualsiasi app/webapp/backend. Il tuo Android è altrimenti più un'app client o si basa su altre funzionalità offerte dall'app web tramite il servizio web? È in qualche modo integrato con le azioni degli utenti che vengono inviate al back-end, o offre solo alcuni espedienti aggiuntivi (es. Pulsante 'Mi piace', qualsiasi cosa nelle linee) Stai usando l'SDK per autenticare e estrarre i dati relativi all'utente da FB (email , nome) e queste informazioni hanno un ruolo nel tuo back-end?

come la vedo io, si riduce a quanto segue:

comunicazione diretta con FB è molto più semplice da implementare, come non si avrà un ulteriore livello tra la vostra app e FB, vale a dire codice proxy, ecc Quindi, se FB è accoppiato in modo approssimativo, è probabile che sia l'opzione "abbastanza buona".

Patchare l'FB dal frontend al backend può diventare sgradevole, soprattutto se si desidera autenticarsi tramite FB è un po 'complesso all'inizio. Tuttavia, avrai tutta la logica FB in un unico posto, condivisa da App Android e Webapp, quindi è ovviamente più facile mantenere in seguito e meglio integrare con altre interazioni che il tuo back-end potrebbe offrire.

La speranza che fornisce un certo valore, sarebbe ansiosa di vedere anche altre opinioni.

2

Beh, penso che entrambi gli approcci siano corretti ma la scelta dipende principalmente da ciò che hai già sul lato server e se stai pianificando di utilizzare la stessa funzionalità da diverse app come (app Android, iOS, Windows Phone) . In questo caso ha senso ottenere il token utente con le autorizzazioni necessarie sul front-end e lasciare che il server web parli con Facebook usando quel token. Puoi anche salvare questo token per l'utente in modo che non debbano concedere nuovamente le autorizzazioni se ad esempio hai la registrazione web e la registrazione dell'app. Nella nostra app usiamo questo approccio poiché ci sono fondamentalmente cinque front end (Android, iOS, Desktop, Web mobile, Web completo) in questo modo gli sviluppatori di applicazioni ottengono solo token usando sdk sulla piattaforma (devi usare token e non nome utente , password a causa delle regole di Facebook per la sicurezza). D'altra parte, se tutta la comunicazione di Facebook è utilizzata solo all'interno della tua app e il server non ha bisogno di sapere molto su di esso, mette le chiamate api nell'app.

2

A mio parere, è preferibile utilizzare gli SDK/API disponibili per ogni determinata piattaforma invece di provare a scrivere la propria centralizzazione e utilizzare una singola libreria. Dato che sei particolarmente interessato a come l'app Android dovrebbe gestire le interazioni sociali, ti suggerisco di utilizzare l'SDK di Facebook per Android.

Mentre aumenta la dimensione del codice che è necessario mantenere e gli SDK/API da imparare man mano che l'elenco delle piattaforme aumenta, il fattore più importante per questo approccio è l'esperienza dell'utente.Attaccando con le librerie native e facendo crescere la tua app man mano che queste librerie evolvono, fornirai ai tuoi utenti un'esperienza a cui sono più abituati. Non dovranno imparare come usare la tua app, ma saranno in grado di creare post, aggiornare il loro stato e guardare la loro lista di amici usando i controlli che sono abituati a usare. Inoltre, sarai in grado di sfruttare le funzionalità specifiche della piattaforma (nel caso mobile, ad esempio pubblicare l'app su un feed degli utenti in modo da promuovere la tua app: https://developers.facebook.com/docs/tutorials/androidsdk/3.0/games/feed/)

Problemi correlati