Soluções sensatas para a remoção da permissão offline_access
Estou voltando a construir um aplicativo FB depois de algum tempo longe da plataforma FB e vejo que a antiga permissão offline_access foi removida e substituída por tokens longos (ish) -expiry [1].
Então, agora parece que qualquer aplicativo externo que precise enviar dados para o Facebook com base em, digamos, um agendamento ou alguma atividade no aplicativo externo precisará lidar com o token de acesso longo expirado. Isso se torna mais frustrante, porque agora um usuário desconectado do FB também mata qualquer token de expiração longa [2], enquanto antes, offline_access continuava ativo mesmo quando o usuário estava desconectado.
Eu ainda estou no estágio de pensar em uma solução, mas duas idéias vêm à mente:
1) Sempre que meu aplicativo contatar um usuário com integração FB, ele será solicitado a clicar em um link que acionará uma nova autenticação com o FB para obter um novo token de acesso longo. Meus usuários geralmente são contatados várias vezes durante a vida útil de um token de acesso longo, portanto,devemos efetivamente continue renovando o token de acesso longo pelo tempo que for necessário (mesmo que isso adicione algum atrito irritante ao meu aplicativo)
2) Porque não posso garantir que 1) funcionará sempre (devido a usuários não clicarem no link de re-autenticação na notificação por e-mail do meu aplicativo ou desconectarem-se do Facebook, por exemplo) também terei que lidar com as interações do FB com falha colocando-os em uma fila de espera e enviando um email ao usuário para pedir explicitamente que eles concedam novamente um token de acesso longo. Não é legal, mas não vejo outra opção. Se eles não responderem à solicitação depois que X tentar pedir permissão para que ela seja concedida novamente, só terei que anular a tarefa e enviá-la por e-mail explicando que é devido a uma limitação do FB, não ao meu aplicativo. Mais uma vez, não é legal.
Alguém precisou criar soluções melhores para manter a capacidade de interagir com a conta de um usuário com permissões de autenticação / explícitas? Eu gostaria de ouvir o que você fez.
(Isso tudo está me esperando releitura do FB ToS, é claro - é totalmente possível que isso seja contra as regras, o que seria ainda mais frustrante)
EDITAR / ATUALIZAR: os dados que eu preciso enviar são imagens para um álbum de fotos que chegará ao meu servidor de várias fontes e será então enviado para o álbum de um usuário apropriado (com permissão pré-concedida, é claro). Não posso garantir nenhuma interação com o usuário final na Web no momento em que as imagens atingem meu servidor para que o usuário final me conceda um novo token de curta duração. Basicamente,offline_access
realmente teria sido ideal para este OMI.
UPDATE 2: NB: é realmente fundamental para o meu caso de uso que o usuário não esteja necessariamente usando meu aplicativo ou Facebook quando o token precisar ser concedido ou estendido.
[1]https://developers.facebook.com/roadmap/offline-access-removal/ [2]http://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/