2009-12-27 3 views
11

Sto provando a scrivere una semplice app che permetta a un utente di concedere al mio codice il permesso di scrivere sul flusso Facebook della sua pagina. A quanto ho capito, dovrebbe essere facile come:Come ottenere (e utilizzare) i permessi estesi in Facebook con Python/Django

  1. Fare clic su un pulsante che consente di aprire un popup contenente la pagina nella mia app di Facebook.
  2. In quella pagina, fanno clic su qualcosa che concede stream_publish alla mia app e assegna tale autorizzazione alla loro pagina.
  3. La finestra si chiude, ora ho tutte le informazioni di cui ho bisogno per eseguire uno script in cron per spingere cose nello stream di quella pagina.

Ho letto il wiki per giorni. Le note su pyfacebook sono scadute da almeno un anno e le persone mi hanno indirizzato all'app socialauth per Django che sembra essere altrettanto obsoleta e focalizzata sul targeting degli utenti rispetto alle loro pagine. Non riesco nemmeno a fare il n. 1, lasciate n. 2 e 3.

Se qualcuno potesse mostrarmi come usare Django/Python per richiedere/ricevere il permesso di scrivere su un flusso Facebook, sarebbe un grande inizio.

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

1

Dopo un sacco di ritocchi, mi sembra di aver risolto tutti i miei problemi in Facebookland:

  1. scopre che avere un utente clicca su un pulsante per concedere le autorizzazioni è facile come detto Caio Romão che era . Per quanto mi riguarda, ho scoperto che indirizzarli al collegamento dell'app desktop di Facebook era molto più semplice e affidabile.
  2. Utilizzando questo metodo di collegamento, Facebook consente di specificare enable_profile_selector=1 che si assicurerà che venga generato un elenco di pagine da cui l'utente può selezionare quali pagine (se presenti) concederanno tali autorizzazioni.
  3. Per questo uno, Facebook è completamente rotto. Mentre in # 2 consentono all'utente di selezionare una pagina per concedere le autorizzazioni, non passano queste informazioni sull'applicazione tramite un POST o nelle intestazioni. Non è lì. Invece, devi fare un brutto trucco con FQL e alcune domande aggiuntive all'utente per farlo funzionare.

In ogni caso, I detailed it all on my blog se qualcuno è interessato. Grazie per l'aiuto!

3

Hai guardato minifb? Il loro examples page mostra praticamente tutto ciò che è necessario sapere per richiedere l'autorizzazione e ricevere una chiave di sessione. (Inoltre, la github page for pyfacebook mostra che la biblioteca è ancora vivo)

Così, per lo scenario avresti bisogno:

  1. Richiesta l'autorizzazione "stream_publish". Ci sono some ways per farlo, ma in realtà andrei per il più semplice: submitting a form (nota che non ho mai fatto un'app per Facebook, probabilmente ho sbagliato supponendo che questo approccio sia il più semplice :-)
  2. Usa la tua applicazione normalmente: chiama i metodi API usando user_id dell'utente che ha autorizzato la tua applicazione (dovrai salvarlo) e, dato che sei autorizzato, non dovrebbe fallire.

Per questo, in fondo, aggiungere questo modulo sul modello:

<form promptpermission="publish_stream"> 
<input type="submit" value="Allow Publish Stream"> 
</form> 

Complimenti agli sviluppatori di Facebook, tra l'altro. Molto bella documentazione ufficiale.

EDIT: Non mi è permesso di commentare eppure così: In caso di affrontare i problemi ottenere l'uid, controllare this question ei riferimenti.

+0

Lo fai sembrare così facile - dovrò provarlo la mattina e tornare da te :-) –