2012-07-17 12 views
9

Dla aplikacji, którą muszę opracować, muszę mieć możliwość synchronizowania danych zarówno z Gmaila, jak i Facebooka za pomocą SyncAdapter. Mam nadzieję, że zsynchronizuję się z lokalnymi aplikacjami Facebook i Gmail (jeśli są dostępne) zamiast ich zdalnymi serwerami. Synchronizacja z lokalnymi aplikacjami oznaczałaby mniejsze zużycie baterii, mniejsze zużycie sieci, szybszą synchronizację itd. Oczywiście, jeśli to konieczne, ustawię odpowiednie uprawnienia.Skorzystaj z SyncAdapter, aby zsynchronizować dane aplikacji * local * gmail i facebook.

Moje pytania:

  • Jeżeli którykolwiek z aplikacji (Gmail/Facebook) są dostępne, to jest możliwe, aby zapytać ich danych (wiadomości, wydarzeń, etc.)?
  • Jeśli nie, czy można uzyskać od nich token uwierzytelniający (lub jakikolwiek rodzaj poświadczenia), który pozwoli mi przesłać zapytanie do serwera bez konieczności ponownego wpisywania nazwy użytkownika i hasła każdego z nich?
  • Jeśli to możliwe, czy możliwa jest również automatyczna synchronizacja natychmiast po zsynchronizowaniu aplikacji Facebook lub Gmail, aby otrzymywać nowe dane, gdy tylko się pojawią?

Jeśli żadna z tych opcji nie jest dostępna, prawdopodobnie muszę pobrać te dane samodzielnie, więc nie ma to znaczenia dla tego pytania.

Odpowiedz

3

Nie mogę mówić za pośrednictwem Facebooka, ale aplikacja GMail na to nie pozwala. Wcześniej działało, ale od tego czasu zabezpieczyło je, aby tylko aplikacje Google mogły wysyłać zapytania do dostawcy treści e-mail. Najlepsze, co możesz zrobić, to uzyskać liczbę wiadomości za pomocą labels API. Możesz uzyskać token uwierzytelniający (ClientLogin lub OAuth2) dla usług Google przy użyciu standardowego Androida AccountManager. Będziesz wtedy musiał użyć go, aby połączyć się z konkretnym API, aby uzyskać aktualne dane.

+0

jakie są możliwe rzeczy, które mogę zrobić z tym tokenem OAuth2? jak to się stało, że Google ma tyle usług, z których mogę korzystać, ale Gmail nie jest ich częścią? –

+0

Gmail ma co najmniej interfejs RSS, który można uzyskać za pomocą tokenu OAuth. Mogą też być inne API, powinieneś się o tym dowiedzieć. Szanse są możliwe do uwierzytelnienia w prawie wszystko, co Google oferuje za pomocą tokena. –

+0

ale czy mogę czytać wszystkie wiadomości, w tym te, które zostały przeczytane? –

2

Ah, teraz lepiej zrozumiałem twoje pytanie. Nie sądzę, że istnieje sposób na uzyskanie danych, które są zainteresowane bezpośrednio z lokalnych kopii aplikacji. Jest to interesujący pomysł i uzasadniony ze względu na sugerowane przez ciebie szybkości/miejsca/szerokości pasma, ale wymagałby znacznej pomocy od aplikacji, które nie są obecnie dostępne.

Próba uniknięcia ponownego wpisania hasła przez użytkownika jest również prawie na pewno niewystarczająca, aby było niemożliwe, nawet jeśli aplikacje wspierały udostępnianie danych lokalnych. W końcu, jak aplikacja GMail sprawdza, czy Twoja aplikacja powinna mieć uprawnienia do odczytu wszystkich swoich danych? Przypuszczalnie poprzez zapytanie użytkownika o nazwę użytkownika Gmaila i hasło. Samo przebywanie na tym samym urządzeniu zdecydowanie nie oznacza całkowitego zaufania.

Korzystanie z narzędzia SyncAdapter i przechowywanie tokena uwierzytelniania, jak pokazano w przykładowym projekcie, powinno umożliwić użytkownikowi ograniczenie wprowadzania jego poświadczeń tylko raz, ale jest to najlepsze, co można zrobić.


Poprzednio:

Miałeś spojrzenie na SampleSyncAdapter dołączony do SDK?

These instructions Krótkie omówienie sposobu uzyskiwania dostępu do próbek.

Jeśli używasz platformy Eclipse, w rzeczywistości jest to jeszcze łatwiejsze niż sugerują.Aby uzyskać przykładowy projekt:

  1. Wybierz File>New>Other...
  2. Wybierz Android>Android Sample Project
  3. Wybierz dowolny cel/API poziom ma zastosowanie do projektu (prawdopodobnie ostatni)
  4. Wybierz próbkę projekt, który Cię interesuje, SampleSyncAdapter w tym przypadku

Przykładowy projekt jest doskonałym przykładem tego, jak korzystaj z SyncAdapters i łatwo dostosowuj się, aby łączyć się z Gmailem, Facebookiem itp.

+0

Niestety, tak, próbowałem go i widziałem, że nie tylko prosi o nazwę użytkownika i hasło (mimo że mam Gmail), ale również nie udało się zalogować (i wprowadzam poprawne userName i hasło) i pokazać mi wszystko, co może zrobić. również nie sądzę, że może to zrobić z wiadomościami gmail, tylko kontakty (zgodnie z manifestem). –

+0

@androiddeveloper Zaktualizowany teraz, że lepiej rozumiem twoje pytanie. Zauważ, że domyślnie SyncAdapter nie łączy się z GMail, ale z pewną specjalnie zaprojektowaną usługą SyncAdapter. Musisz go zmienić, aby działał z Gmailem. Być może dlatego nie zachowywał się właściwie dla ciebie. – blahdiblah

+0

Czy mówisz o próbce lub o pytaniu o wpis? w każdym razie, jak to możliwe, że próbka nie działa bez żadnych zmian, i dlaczego nie zapisują, co należy zmienić? nie rozumiem też, jak to możliwe, że nie mogę znaleźć przyzwoitego samouczka, który działa z Gmail lub Facebook, ponieważ są one uważane za bardzo popularne. –

Powiązane problemy