Tạo và quản lý các phiên

Phiên là cốt lõi của Picker API, mang đến cho người dùng một cách an toàn và có kiểm soát để chọn ảnh và video trong thư viện Google Photos của họ. Hướng dẫn này trình bày cách tạo, quản lý và thăm dò ý kiến một cách hiệu quả về các phiên để cho phép người dùng chọn ảnh liền mạch trong ứng dụng của bạn.

Trước khi bắt đầu

  • Định cấu hình ứng dụng: Bật API và thiết lập quy trình xác thực. Hãy xem phần Định cấu hình ứng dụng để biết các bước chi tiết.
  • Tìm hiểu quy trình: Xem bài viết bắt đầu sử dụng Picker API để biết thông tin tổng quan về toàn bộ quy trình chọn ảnh.
  • Xem xét các phạm vi uỷ quyền bắt buộc: Để làm việc với các phiên, bạn cần có phạm vi photospicker.mediaitems.readonly. Để biết thêm thông tin về phạm vi, hãy xem phần Phạm vi uỷ quyền.

Vòng đời của phiên

Picker API cung cấp các phương thức để tạo, truy xuất thông tin về và xoá các phiên. Sau khi xác thực người dùng, bạn có thể sử dụng các phiên để quản lý vòng đời chọn ảnh.

  1. Tạo một phiên để cho phép người dùng chọn các mục nội dung nghe nhìn.
  2. Lấy thông tin về phiên để kiểm tra thời điểm người dùng hoàn tất việc chọn các mục nội dung nghe nhìn.
  3. Liệt kê và truy xuất các mục nội dung nghe nhìn.
  4. Dọn dẹp phiên bằng cách xoá phiên đó.

Tạo phiên

Tạo một phiên để người dùng có thể chọn ảnh một cách an toàn ngay trong ứng dụng Google Photos của họ và chia sẻ lại cho ứng dụng của bạn.

sessions.create tạo một phiên mới, trả về một pickerUri duy nhất mà bạn có thể trình bày cho người dùng. Phiên vẫn hoạt động cho đến khi người dùng chọn thành công các mục nội dung nghe nhìn hoặc phiên hết thời gian chờ. Đối với các ứng dụng dựa trên web, bạn có thể thêm /autoclose vào pickerUri để tự động đóng cửa sổ hoặc thẻ Google Photos sau khi người dùng hoàn tất việc chọn ảnh. Hãy xem phần Chọn ảnh: những gì người dùng thấy để biết thông tin chi tiết.

Giới hạn phiên

Lưu ý về giới hạn phiên. Picker API áp dụng giới hạn về số lượng phiên bạn có thể tạo để đảm bảo việc sử dụng có trách nhiệm và ngăn chặn hành vi sai trái. Trong trường hợp bình thường, bạn khó có thể đạt đến những giới hạn này. Tuy nhiên, bạn nên chủ động theo dõi và dọn dẹp các phiên để tránh mọi vấn đề.

Phiên thăm dò ý kiến và giám sát

Sau khi tạo một phiên, hãy định kỳ thăm dò điểm cuối sessions.get để biết trạng thái của một phiên. Thuộc tính mediaItemsSet trong phản hồi sẽ trả về true khi người dùng hoàn tất lựa chọn.

Hãy nhớ sử dụng cơ chế thăm dò hiệu quả. Phản hồi sessions.get bao gồm đối tượng pollingConfig. Hãy sử dụng các trường sau để tránh các lệnh gọi không cần thiết và tạo trải nghiệm mượt mà cho người dùng:

  • pollInterval: khoảng thời gian thăm dò ý kiến tối ưu
  • timeoutIn: thời lượng nghỉ hội ý

Hãy xem Ví dụ về quy trình thăm dò ý kiến để biết thêm thông tin chi tiết.

Xoá và dọn dẹp các phiên

sessions.delete xoá một phiên, thường được dùng để dọn dẹp sau khi người dùng hoàn tất việc chọn nội dung nghe nhìn hoặc nếu phiên hết thời gian chờ.

Bạn nên xoá các phiên sau khi người dùng đã chọn các mục nội dung nghe nhìn và ứng dụng của bạn đã truy xuất các byte của mục nội dung nghe nhìn.

Ví dụ về quy trình thăm dò

Đây là ví dụ về cách tạo và thăm dò ý kiến về một phiên. Sau khi xác thực người dùng lần đầu, hãy tạo một phiên mới.

  1. Tạo một phiên: Gọi sessions.create để bắt đầu một phiên mới và lấy pickerUri.
  2. Đưa pickerUri cho người dùng: Hiển thị URL hoặc tạo mã QR để người dùng quét. Đọc thông tin tổng quan về trải nghiệm chọn hàng của người dùng.
  3. Thăm dò ý kiến trong phiên:
    1. Sử dụng pollInterval được đề xuất từ pollingConfig.
    2. Kiểm tra xem mediaItemsSet có đúng hay không.
      1. Nếu true, hãy chuyển sang liệt kê các mục nội dung nghe nhìn đã chọn.
      2. Nếu false, hãy tiếp tục thăm dò cho đến khi đạt được timeoutIn.
    3. Xử lý các trường hợp hết thời gian chờ và huỷ một cách nhẹ nhàng.
GET https://photoslibrary.googleapis.com/v1/sessions/{sessionId}

Sau đây là một ví dụ về phản hồi:

{
  "id": string,
  "pickerUri": string,
  "pollingConfig": {
    object (PollingConfig)
  },
  "mediaItemsSet": boolean
}

Hiển thị pickerUri cho người dùng, sau đó bắt đầu thăm dò phiên.

Kiểm tra phản hồi để xem có những nội dung sau không:

  • mediaItemsSet: true nếu người dùng đã chọn xong các mục nội dung nghe nhìn
  • pollingConfig.pollInterval: thời gian chờ được đề xuất trước lần thăm dò ý kiến tiếp theo
  • pollingConfig.timeoutIn: tổng thời gian chờ trước khi hết thời gian chờ

Nếu mediaItemsSet là false và chưa đạt đến timeoutIn, hãy đợi pollInterval rồi thăm dò lại.

Nếu mediaItemsSet là true, hãy chuyển sang liệt kê các mục nội dung nghe nhìn đã chọn.

Nếu đạt đến timeoutIn, hãy xử lý thời gian chờ một cách linh hoạt.