Use o SyncAdapter para sincronizar com o * local * gmail e os dados do aplicativo do facebook

9

Para um aplicativo que preciso desenvolver, preciso sincronizar com os dados do Gmail e do Facebook usando um SyncAdapter. Espero sincronizar com os aplicativos locais do Facebook e Gmail (se disponíveis) em vez de seus servidores remotos. A sincronização com os aplicativos locais significaria menos uso de bateria, menos uso de rede, sincronização mais rápida etc. Claro que, se necessário, configurarei as permissões corretas.

Minhas perguntas :

  • Se algum dos aplicativos (gmail / facebook) estiver disponível, é possível consultá-los em busca de dados (mensagens, eventos, etc.)?
  • Se não, é possível obter um token de autenticação (ou qualquer tipo de credencial) deles que me permita consultar o servidor sem que o usuário precise colocar um nome de usuário e senha de cada um deles novamente?
  • Se isso for possível, também é possível sincronizar automaticamente imediatamente após a sincronização dos aplicativos do Facebook ou Gmail, para que eu receba novos dados assim que eles o fazem?

Se nenhum deles estiver disponível, acho que precisarei buscar os dados por mim mesmo, o que não é relevante para essa pergunta.

    
por android developer 18.07.2012 в 01:25
fonte

2 respostas

3

Eu não posso falar pelo Facebook, mas o aplicativo Gmail não permite isso. Ele costumava funcionar anteriormente, mas desde então eles o protegeram de modo que somente os aplicativos do Google podem consultar o provedor de conteúdo de e-mail. O melhor que você pode fazer é obter o número de mensagens com a API de rótulos . Você pode obter um token de autenticação (ClientLogin ou OAuth2) para os serviços do Google usando o padrão Android AccountManager . Você terá que usá-lo para se conectar à API específica para obter os dados reais.

    
por Nikolay Elenkov 03.08.2012 / 08:47
fonte
2

Ah, agora entendi melhor sua pergunta. Não creio que haja alguma maneira de obter os dados de seu interesse diretamente nas cópias locais dos aplicativos. É uma ideia interessante e razoável para os motivos de velocidade / espaço / largura de banda que você sugere, mas exigiria suporte significativo dos aplicativos que não estão disponíveis no momento.

Tentar evitar que o usuário insira novamente sua senha também é algo que quase certamente ainda <<> é impossível, mesmo se os aplicativos suportarem o compartilhamento de dados locais. Afinal, como o app do GMail vai verificar se seu aplicativo deve ter permissão para ler todos os seus dados? Presumivelmente, solicitando seu nome de usuário e senha do GMail. Apenas estar no mesmo dispositivo definitivamente não implica confiança total.

Usando um SyncAdapter e armazenando o token de autenticação, como demonstrado no projeto de exemplo, você deve ser capaz de limitar o usuário a inserir suas credenciais uma vez, mas isso é o melhor que você poderá fazer.

Anteriormente:

Já deu uma olhada no SampleSyncAdapter incluído no SDK?

Estas instruções fornecem uma visão geral rápida de como acessar as amostras.

Se você estiver usando o Eclipse, é realmente mais fácil do que eles sugerem. Para obter o projeto de amostra:

  1. Selecione File > New > %código%
  2. Escolha Other... > %código%
  3. Escolha o nível de segmentação / API aplicável ao seu projeto (provavelmente o mais recente)
  4. Selecione o projeto de amostra no qual você está interessado, SampleSyncAdapter, neste caso

O projeto de exemplo é um ótimo exemplo de como usar o SyncAdapters e deve ser facilmente adaptável para se conectar com o Gmail, Facebook, etc.

    
por blahdiblah 27.07.2012 / 03:33
fonte