2012-07-17 36 views
9

Đối với ứng dụng tôi cần phát triển, tôi cần có khả năng đồng bộ hóa với cả dữ liệu gmail và facebook bằng SyncAdapter. Tôi hy vọng sẽ đồng bộ hóa với các ứng dụng facebook và gmail địa phương (nếu có) thay vì các máy chủ từ xa của họ. Đồng bộ hóa với các ứng dụng cục bộ sẽ có nghĩa là ít sử dụng pin hơn, ít sử dụng mạng hơn, đồng bộ hóa nhanh hơn, v.v. Tất nhiên, nếu cần, tôi sẽ đặt quyền chính xác.Sử dụng SyncAdapter để đồng bộ hóa với * local * gmail và dữ liệu ứng dụng facebook

Câu hỏi của tôi:

  • Nếu bất kỳ ứng dụng (gmail/facebook) có sẵn, là nó có thể truy vấn họ cho dữ liệu (tin nhắn, sự kiện, vv)?
  • Nếu không, có thể nhận mã thông báo xác thực (hoặc bất kỳ loại thông tin xác thực nào) cho phép tôi truy vấn máy chủ mà không cần phải nhập lại tên người dùng và mật khẩu của từng người dùng không?
  • Nếu có thể, bạn cũng có thể tự động đồng bộ hóa ngay lập tức sau khi đồng bộ hóa ứng dụng facebook hoặc gmail, để tôi nhận được dữ liệu mới ngay khi thực hiện?

Nếu không có cái nào trong số này, tôi đoán tôi sẽ cần tự tìm nạp dữ liệu, vì vậy điều đó không liên quan đến câu hỏi này.

Trả lời

3

Tôi không thể nói cho Facebook, nhưng ứng dụng Gmail không cho phép điều này. Nó được sử dụng để làm việc trước đây, nhưng họ đã bảo đảm nó để chỉ các ứng dụng của Google mới có thể truy vấn nhà cung cấp nội dung email. Điều tốt nhất bạn có thể làm là nhận được số lượng tin nhắn với số labels API. Bạn có thể nhận mã thông báo xác thực (ClientLogin hoặc OAuth2) cho các dịch vụ của Google bằng cách sử dụng chuẩn Android AccountManager. Sau đó, bạn sẽ phải sử dụng nó để kết nối với API cụ thể để có được dữ liệu thực tế.

+0

Tôi có thể làm gì với mã thông báo OAuth2 này? Ngoài ra, làm thế nào đến google có rất nhiều dịch vụ mà tôi có thể sử dụng, nhưng gmail không phải là một phần của họ? –

+0

GMail có ít nhất một giao diện RSS mà bạn có thể sử dụng mã thông báo OAuth. Cũng có thể có các API khác, bạn nên nghiên cứu về nó. Rất có thể bạn có thể xác thực với hầu hết mọi thứ mà Google cung cấp bằng mã thông báo. –

+0

nhưng tôi có thể đọc tất cả tin nhắn, kể cả những tin nhắn đã đọc không? –

2

Ah, giờ tôi đã hiểu rõ hơn câu hỏi của bạn. Tôi không nghĩ rằng có bất kỳ cách nào để lấy dữ liệu bạn quan tâm trực tiếp từ các bản sao ứng dụng cục bộ. Đó là một ý tưởng thú vị và lý tưởng cho các lý do tốc độ/không gian/băng thông mà bạn đề xuất, nhưng sẽ yêu cầu hỗ trợ đáng kể từ các ứng dụng hiện không có sẵn.

Cố gắng tránh việc người dùng nhập lại mật khẩu của họ cũng là điều gần như chắc chắn là vẫn còn là không thể ngay cả khi các ứng dụng đã hỗ trợ chia sẻ dữ liệu cục bộ. Xét cho cùng, ứng dụng Gmail sẽ xác minh rằng ứng dụng của bạn nên có quyền đọc tất cả dữ liệu của ứng dụng như thế nào? Có lẽ bằng cách nhắc nhập tên người dùng và mật khẩu Gmail của bạn. Chỉ đơn thuần là trên cùng một thiết bị chắc chắn không ngụ ý hoàn toàn tin tưởng.

Sử dụng SyncAdapter và lưu trữ mã thông báo xác thực như được minh họa trong dự án mẫu, bạn có thể giới hạn người dùng nhập thông tin xác thực của họ một lần, nhưng đó là điều tốt nhất bạn có thể làm.


Trước đây:

Có bạn đã có một cái nhìn tại các SampleSyncAdapter kèm với SDK?

These instructions cung cấp tổng quan nhanh về cách truy cập mẫu.

Nếu bạn đang sử dụng Eclipse, nó thậm chí còn dễ dàng hơn khi họ đề xuất ở đó.Để có được dự án mẫu:

  1. Chọn File>New>Other...
  2. Chọn Android>Android Sample Project
  3. Chọn bất cứ mục tiêu/API Cấp được áp dụng cho dự án của bạn (có lẽ là mới nhất)
  4. Chọn mẫu dự án bạn quan tâm, SampleSyncAdapter trong trường hợp này là

Dự án mẫu là một ví dụ tuyệt vời về cách sử dụng SyncAdapters và phải dễ dàng thích nghi để kết nối với Gmail, Facebook, v.v.

+0

thật đáng buồn, có, tôi đã thử nó và tôi đã thấy rằng không chỉ nó yêu cầu userName và mật khẩu (mặc dù tôi có gmail), nhưng nó cũng không thành công để đăng nhập (và tôi nhập đúng userName và mật khẩu) và cho tôi thấy bất cứ điều gì mà nó có thể làm. tôi cũng không nghĩ rằng nó có thể làm bất cứ điều gì với tin nhắn của gmail, chỉ liên lạc (theo biểu hiện). –

+0

@androiddeveloper Được cập nhật ngay bây giờ để tôi hiểu câu hỏi của bạn tốt hơn. Lưu ý rằng theo mặc định, SyncAdapter không kết nối với GMail, nhưng với một số dịch vụ SyncAdapter được xây dựng nhằm mục đích. Bạn sẽ phải thay đổi nó để làm việc với GMail. Đó có thể là lý do tại sao nó không hoạt động chính xác cho bạn. – blahdiblah

+0

bạn đang nói về mẫu hay về câu hỏi của bài đăng? trong mọi trường hợp, làm thế nào đến mẫu không hoạt động mà không có bất kỳ thay đổi nào, và làm sao chúng không ghi lại những gì cần được thay đổi? tôi cũng không hiểu làm thế nào nó có thể được rằng tôi không thể tìm thấy một hướng dẫn phong nha mà làm việc với một trong hai gmail hoặc facebook, vì chúng được coi là rất phổ biến. –

Các vấn đề liên quan