Cómo manejar el post "ACAccountCnetworkingentialRenewResultRejected" al llamar a renewCnetworkingentialsForAccount

Creo un ACAccountStore , obtengo acceso a la count de Facebook del usuario, ACAccount la count en un object ACAccount y puedo recuperar el token de las cnetworkingenciales. Pero cuando trato de usar este token para recuperar información de Facebook, no se autentica, e intentar renovar las cnetworkingenciales usando renewCnetworkingentialsForAccount solo producirá una respuesta de ACAccountCnetworkingentialRenewResultRejected .

No puedo get el permiso pop-up para volver a aparecer para solicitar permiso por cualquier medio fácil. La única forma en que puedo conseguir que solicite permiso una vez más es cambiar los permissions que solicito en la aplicación o eliminar y volver a agregar mi count de Facebook en la configuration.

¿Cómo obtengo un token de authentication válido en este momento?

Como no hay una respuesta aceptada, trato de responder a lo que encontré. Después de mi comentario anterior, leí la documentation sobre renewCnetworkingentialsForAccount que dice "Si el usuario ha desautorizado su aplicación, esta request de renovación devolverá ACAccountCnetworkingentialRenewResultRejected".

Lo que es engañoso es que no es el usuario quien rechaza sino Facebook.

Creo que ahora entiendo el concepto y trato de responder a aquellos que fracasaron con este problema como yo. De hecho, lo que no me di count es que mi token de FB se restablecerá por completo cuando reciba el resultado ACAccountCnetworkingentialRenewResultRejected . Y ese es el elemento key del rompecabezas.

Entonces, qué debes hacer para get resultados diferentes:

  • ACAccountCnetworkingentialRenewResultRenewed , eres bueno para ir y tienes un token nuevo. Ve y realiza tu SLRequest con este token renovado.
  • ACAccountCnetworkingentialRenewResultRechazado : su token se reinicia , si intenta get uno, será nulo . Tienes que solicitar permissions de los usuarios desde cero y "instalar" la aplicación para Facebook. Eso significa que primero pide el "correo electrónico + otros permissions de lectura" habituales y (si lo necesita) en una request por separado, solicita permissions de escritura. (Alguien podría explicar por qué Facebook quiere que moleste al usuario dos veces si quiero upload una foto, por ejemplo)
  • ACAccountCnetworkingentialRenewResultFailed : No pude reproducir esto nunca. Creo que aquí soltamos un post de error al usuario.

Esto es lo que me ocurrió. Es una API muy desagradable que tiene poca documentation y muestras faltantes. También los ejemplos en Internet se refieren al "éxito" y no les importa el hecho de que el usuario pueda revocar los permissions fuera de la aplicación. Estoy en un modo constante de testing y falla. Perdiendo el cabello canoso pero llegando hasta el final. Espero que mi respuesta ayude a los demás.