2013-06-20 6 views
7

Creo un ACAccountStore, accesso all'account Facebook dell'utente, archiviato l'account in un oggetto ACAccount e sono in grado di recuperare il token dalle credenziali. Ma quando provo a usare questo token per recuperare informazioni da Facebook, non si autenticherà e il tentativo di rinnovare le credenziali usando renewCredentialsForAccount produrrà solo una risposta di ACAccountCredentialRenewResultRejected.Come gestire il messaggio "ACAccountCredentialRenewResultRejected" quando si chiama renewCredentialsForAccount

Non riesco a visualizzare il pop-up di autorizzazione per visualizzare nuovamente l'autorizzazione per richiedere l'autorizzazione con facilità. L'unico modo in cui riesco a richiedere il permesso ancora una volta è quello di modificare le autorizzazioni che chiedo nell'app o di eliminare e aggiungere nuovamente il mio account Facebook nelle impostazioni.

Come ottenere un token di autenticazione valido a questo punto?

+0

Posso ricreare lo stesso errore rimuovendo l'app dalla pagina delle impostazioni dell'app su Facebook. Sembrerebbe che sia sufficiente che il pop-up della richiesta di autorizzazione si verifichi ancora una volta per ottenere il permesso dell'utente, ma non verrà visualizzato finché non effettuo il logout/in sul mio telefono. – ZachLHelms

+0

Sembra però che quando si effettua il 'renewCredentialsForAccount' si chiami che la prossima volta che avrò lanciato l'app e proverò ad accedere mi verrà richiesto di dare le autorizzazioni all'app.Considerando che se non faccio quella chiamata non mi viene mai richiesto di farlo. – ZachLHelms

+0

Lo stesso problema qui. Facile da riprodurre: 1) concedere il permesso una volta all'app 2) senza uscire da FB graph explorer e cancellare tutte le autorizzazioni 3) prova renewCredentialsForAccount. Qualcuno ha trovato una soluzione per questo? FB api ha un closeSessionsAndToken (o simile) che risolve questo problema. Ma per quanto riguarda l'api sociale? – Teddy

risposta

3

Poiché non c'è risposta accettata, cerco di rispondere a ciò che ho trovato. Dopo il mio commento sopra ho letto la documentazione su renewCredentialsForAccount che dice "Se l'utente ha annullato l'autorizzazione dell'app, questa richiesta di rinnovo restituirà ACAccountCredentialRenewResultRejected."

Che cosa è ingannevole che non è l'utente che rifiuta ma Facebook.

Penso di capire il concetto ora e provo a rispondere a quelli che hanno fallito con questo problema come me. In realtà quello che non avevo capito è che il mio token FB sarà completamente resettato quando riceverò il risultato ACAccountCredentialRenewResultRejected. E questo è l'elemento chiave del puzzle.

Così che cosa dovete fare per ottenere risultati diversi:

  • ACAccountCredentialRenewResultRenewed si sono buoni per andare e si dispone di un nuovo token. Vai ed esegui la tua SLRequest con questo token rinnovato.
  • ACAccountCredentialRenewResultRejected: il token viene azzerato, se si tenta di ottenere uno sarà un nullo. Devi richiedere le autorizzazioni dagli utenti da zero e "installare" l'app per Facebook. Ciò significa che prima chiedi la solita "email + altre autorizzazioni di lettura" e (se necessario) in una richiesta separata chiedi i permessi di scrittura. (Qualcuno potrebbe spiegare perché Facebook vuole che infastidisca l'utente due volte se voglio caricare una foto per esempio)
  • ACAccountCredentialRenewResultFailed: Non riuscivo a riprodurlo mai. Credo che qui lasci un messaggio di errore all'utente.

Questo è quello che mi è venuto in mente. È un'API molto antipatica che ha una documentazione scarsa e campioni mancanti. Anche gli esempi su Internet riguardano il "successo" e non si preoccupano del fatto che l'utente possa revocare le autorizzazioni all'esterno dell'app. Sto provando costantemente la modalità di sviluppo fallita &. Perdere i capelli grigi ma arrivare alla fine. Spero che la mia risposta aiuti gli altri.

+0

spiegazione molto utile e dettagliata, pollice in su! –

Problemi correlati