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.
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
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
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