2016-10-10 16 views
12

Làm việc với Nhắn tin qua đám mây Firebase "mới", tôi muốn lưu mã xác thực của thiết bị khách registration_id mã thông báo vào cơ sở dữ liệu máy chủ cục bộ để phần mềm máy chủ có thể gửi thông báo đẩy cho họ.Độ dài tối đa của mã thông báo ID đăng ký FCM là bao nhiêu?

Kích thước nhỏ nhất của trường cơ sở dữ liệu mà tôi nên sử dụng để tiết kiệm 100% mã thông báo đăng ký khách hàng được tạo ra là gì?

Tôi đã tìm thấy hai differentlibraries sử dụng TextFieldVarChar(255) nhưng không khoát xác định độ dài tối đa. Ngoài ra, tôi muốn mã máy chủ thực hiện kiểm tra độ dài nhanh khi nhận mã thông báo để đảm bảo chúng "nhìn" đúng - điều gì sẽ là độ dài tối thiểu tốt và tập hợp các ký tự để kiểm tra?

Trả lời

9

Tôi nghĩ phần này của FCM vẫn giống như GCM. Do đó, bạn nên tham khảo điều này answer bởi @TrevorJohns:

Tài liệu không chỉ định bất kỳ mẫu nào, do đó bất kỳ chuỗi hợp lệ nào đều được phép. Định dạng có thể thay đổi trong tương lai; vui lòng không xác thực đầu vào này dựa trên bất kỳ mẫu nào vì điều này có thể khiến ứng dụng của bạn bị hỏng nếu điều này xảy ra.

Giống như trường "registration_id", giới hạn trên về kích thước là kích thước tối đa cho cookie, là 4K (4096 byte).

Nhấn mạnh trên Định dạng có thể thay đổi trong phần trong tương lai, tôi sẽ đề nghị để giữ an toàn và có một vượt quá tối đa thông thường (nêu trên) chiều dài. Vì định dạng và thời lượng của mã thông báo đăng ký cũng có thể thay đổi.

Đối với chiều dài thông thường và các nhân vật, bạn có thể tham khảo những twoanswersthứ hai là nhiều dứt khoát hơn:

Tôi đã không nhìn thấy bất kỳ thông tin chính thức về định dạng của GCM registrationId, nhưng tôi đã phân tích cơ sở dữ liệu của chúng ta về các ID này và có thể làm cho kết luận sau:

  • trong hầu hết các trường hợp chiều dài của một registrationID bằng biểu tượng, nhưng có thể là biến thể biểu tượng, có thể các độ dài khác nữa;
  • nó chỉ bao gồm từ ký tự này: [0-9a-zA-Z\-\_]*
  • mỗi regID chứa một hoặc cả hai "delimiters": - (trừ) hoặc _ (gạch dưới)
+3

Chúng tôi cũng nhận được ':' trong thẻ của mình. Tài liệu https://firebase.google.com/docs/cloud-messaging/server hiển thị mã thông báo mẫu là 'bk3RNwTe3H0: CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1 ...' chắc chắn có ':'. – jamesc

+1

@jamesc Tôi cũng đã thấy ':' trong mã thông báo trước đây. Tôi nghĩ đó là ký tự dấu phân cách hợp lệ. –

+0

@jamesc Tôi thường thấy ':' cho mã thông báo đăng ký cho ứng dụng Chrome Client. Nhưng tôi đoán nó vẫn còn có thể cho cả Android và iOS bất kể. Dù sao, tôi nghĩ rằng câu trả lời của tôi ở trên khá nhiều cung cấp cho bạn một ý tưởng và bao gồm các yêu cầu của bạn. Nếu bạn đồng ý, vui lòng chấp nhận nó làm câu trả lời đúng để nó sẽ được gắn thẻ là Đã trả lời. Chúc mừng! –

5

bây giờ tôi đang sử dụng căn cứ hỏa lực Cloud Messaging thay của GCM.

Chiều dài của registration_id tôi nhận được là 152.

Tôi cũng có ":" ở mỗi lần khi bắt đầu giống như những gì jamesc đề cập (ví dụ bk3RNwTe3H0: CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1).

Tôi tạo mã thông báo là varchar (255) đang hoạt động cho tôi.

Tuy nhiên, độ dài của registration_id không có mối quan hệ với kích thước trong 4k. Bạn được phép gửi bất kỳ kích thước dữ liệu nào thông qua mạng . Thông thường, cookie được giới hạn ở 4096 byte, bao gồm tên, giá trị, ngày hết hạn, v.v.

+0

có, đó là 152 ký tự trong hầu hết các lần. – zhilevan

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