บล็อกร้านค้า

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

ผู้ใช้จํานวนมากยังคงจัดการข้อมูลเข้าสู่ระบบของตนเองเมื่อตั้งค่าอุปกรณ์ Android เครื่องใหม่ กระบวนการที่ดําเนินการด้วยตนเองนี้อาจทําได้ยากและมักจะทําให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ไม่ดี Block Store API ไลบรารีที่ขับเคลื่อนโดยบริการ Google Play ต้องการแก้ปัญหานี้ด้วยวิธีที่จะให้แอปบันทึกข้อมูลรับรองของผู้ใช้โดยไม่ก่อให้เกิดความซับซ้อนหรือความเสี่ยงด้านความปลอดภัยในการบันทึกรหัสผ่านของผู้ใช้

API ของบล็อกสโตร์ช่วยให้แอปสามารถจัดเก็บข้อมูลเข้าสู่ระบบของผู้ใช้ไว้ ซึ่งจะสามารถตรวจสอบสิทธิ์ผู้ใช้อีกครั้งบนอุปกรณ์ใหม่ได้ภายหลัง การดําเนินการนี้จะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่นยิ่งขึ้นเพราะผู้ใช้ไม่จําเป็นต้องเห็นหน้าจอลงชื่อเข้าใช้เมื่อเปิดแอปเป็นครั้งแรกในอุปกรณ์เครื่องใหม่

ประโยชน์ของการใช้ Block Store มีดังต่อไปนี้

  • โซลูชันพื้นที่เก็บข้อมูลที่เข้ารหัสที่เข้ารหัสสําหรับนักพัฒนาซอฟต์แวร์ ข้อมูลเข้าสู่ระบบจะได้รับการเข้ารหัส แบบจุดต่อจุดเมื่อทําได้
  • บันทึกโทเค็นแทนชื่อผู้ใช้และรหัสผ่าน
  • ขจัดอุปสรรคจากขั้นตอนการลงชื่อเข้าใช้
  • บันทึกผู้ใช้จากภาระในการจัดการรหัสผ่านที่ซับซ้อน
  • Google ยืนยันตัวตนของผู้ใช้

ก่อนเริ่มต้น

ทําตามขั้นตอนต่อไปนี้เพื่อเตรียมพร้อมแอป

กําหนดค่าแอป

ในไฟล์ build.gradle ระดับโปรเจ็กต์ ให้ใส่ที่เก็บ Maven ของ Google&#39 ไว้ทั้งในส่วน buildscript และ allprojects:

buildscript {
  repositories {
    google()
    mavenCentral()
  }
}

allprojects {
  repositories {
    google()
    mavenCentral()
  }
}

เพิ่มบริการ Google Play ทรัพยากร Dependency สําหรับ Block Store API ลงใน module's ไฟล์บิลด์ Gradle ซึ่งปกติคือ app/build.gradle:

dependencies {
  implementation 'com.google.android.gms:play-services-auth-blockstore:16.1.0'
}

วิธีการทำงาน

Block Store เป็นกลไกการลงชื่อเข้าใช้ที่อิงตามโทเค็นซึ่งมีการเข้ารหัสจากต้นทางถึงปลายทาง และสร้างขึ้นบนโครงสร้างพื้นฐานของการสํารองและกู้คืนข้อมูล ขั้นตอนต่อไปนี้จะสรุปวิธีการทํางานของแอปที่ใช้ Block Store

  1. ระหว่างขั้นตอนการตรวจสอบสิทธิ์แอปหรือหลังจากนั้น คุณสามารถจัดเก็บโทเค็นการตรวจสอบสิทธิ์ของผู้ใช้ไปที่ Block Store เพื่อดึงข้อมูลในภายหลังได้
  2. ระบบจะจัดเก็บโทเค็นไว้ในเครื่องและสํารองไว้ในระบบคลาวด์ โดยเข้ารหัสจากต้นทางถึงปลายทาง หากเป็นไปได้
  3. ระบบจะโอนข้อมูลเมื่อผู้ใช้เริ่มขั้นตอนการกู้คืนในอุปกรณ์ใหม่
  4. หากผู้ใช้กู้คืนแอปของคุณระหว่างขั้นตอนการกู้คืน แอปจะดึงข้อมูลโทเค็นที่บันทึกไว้จาก Block Store ในอุปกรณ์ใหม่ได้

กําลังบันทึกโทเค็น

เมื่อผู้ใช้ลงชื่อเข้าใช้แอป คุณจะบันทึกโทเค็นการตรวจสอบสิทธิ์ที่สร้างไว้สําหรับผู้ใช้รายนั้นไปยัง Block Store ได้ ซึ่งทําได้ด้วยการเรียก setBytes() ในอินสแตนซ์ของ StoreBytesData.Builder เพื่อจัดเก็บข้อมูลเข้าสู่ระบบของผู้ใช้ในอุปกรณ์ต้นทาง หลังจากที่บันทึกโทเค็นด้วย Block Store แล้ว ระบบจะเข้ารหัสและจัดเก็บโทเค็นนั้นไว้ในอุปกรณ์

ตัวอย่างต่อไปนี้แสดงวิธีบันทึกโทเค็นการตรวจสอบสิทธิ์ไปยังอุปกรณ์ในเครือข่ายเดียวกัน

val client = Blockstore.getClient(this)
val data = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)
        .build()
client.storeBytes(data)
        .addOnSuccessListener{ result ->
            Log.d(TAG, "Stored: ${result} bytes")
        }
        .addOnFailureListener { e ->
            Log.e(TAG, “Failed to store bytes”, e)
        }

กําลังเรียกดูโทเค็น

หลังจากนั้น เมื่อผู้ใช้ดําเนินการตามขั้นตอนการกู้คืนในอุปกรณ์ใหม่ บริการ Google Play จะยืนยันผู้ใช้ก่อน แล้วจึงดึงข้อมูล "บล็อก Store" ผู้ใช้ได้ตกลงที่จะคืนค่าข้อมูลแอปของคุณ ซึ่งเป็นส่วนหนึ่งของขั้นตอนการกู้คืน จึงไม่จําเป็นต้องให้คํายินยอมเพิ่มเติม เมื่อผู้ใช้เปิดแอปของคุณ คุณจะขอโทเค็นจาก Block Store ได้โดยโทรไปที่ retrieveBytes() จากนั้นจะใช้โทเค็นที่ดึงขึ้นมาเพื่อให้ผู้ใช้ลงชื่อเข้าใช้ในอุปกรณ์เครื่องใหม่ต่อไป

ตัวอย่างต่อไปนี้แสดงวิธีเรียกข้อมูลโทเค็นที่เข้ารหัสซึ่งก่อนหน้านี้จัดเก็บไว้ด้วย Block Store

val client = Blockstore.getClient(this)
client.retrieveBytes()
            .addOnSuccessListener { result ->
                Log.d(TAG, "Retrieved: ${String(result)}")
            }
            .addOnFailureListener { e ->
                Log.e(TAG, "Failed to retrieve bytes", e)
            }
}

การเข้ารหัสแบบจุดต่อจุด

โดยอุปกรณ์จะต้องใช้ Android 9 ขึ้นไป และผู้ใช้ต้องตั้งค่าการล็อกหน้าจอ (PIN, รูปแบบ หรือรหัสผ่าน) ของอุปกรณ์ จึงจะใช้การเข้ารหัสจากต้นทางถึงปลายทางได้ คุณตรวจสอบได้ว่าการเข้ารหัสจะพร้อมใช้งานในอุปกรณ์หรือไม่โดยเรียกใช้ isEndToEndEncryptionAvailable()

ตัวอย่างต่อไปนี้จะแสดงวิธียืนยันว่าจะใช้การเข้ารหัสระหว่างการสํารองข้อมูลในระบบคลาวด์ได้หรือไม่

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { result ->
          Log.d(TAG, "Will Block Store cloud backup be end-to-end encrypted? $result")
        }

เปิดใช้การสํารองข้อมูลในระบบคลาวด์

หากต้องการเปิดใช้การสํารองข้อมูลระบบคลาวด์ ให้เพิ่มเมธอด setShouldBackupToCloud() ลงในออบเจ็กต์ StoreBytesData Block Store จะสํารองข้อมูลในระบบคลาวด์ไปยังไบต์ที่จัดเก็บไว้เป็นระยะๆ เมื่อ setShouldBackupToCloud() ตั้งค่าเป็น"จริง"

ตัวอย่างต่อไปนี้แสดงวิธีเปิดใช้การสํารองข้อมูลระบบคลาวด์เฉพาะเมื่อการเข้ารหัสระบบคลาวด์เข้ารหัสแบบจุดต่อจุด

val client = Blockstore.getClient(this)
val storeBytesDataBuilder = StoreBytesData.Builder()
        .setBytes(/* BYTE_ARRAY */)

client.isEndToEndEncryptionAvailable()
        .addOnSuccessListener { isE2EEAvailable ->
          if (isE2EEAvailable) {
            storeBytesDataBuilder.setShouldBackupToCloud(true)
            Log.d(TAG, "E2EE is available, enable backing up bytes to the cloud.")

            client.storeBytes(storeBytesDataBuilder.build())
                .addOnSuccessListener { result ->
                  Log.d(TAG, "stored: ${result.getBytesStored()}")
                }.addOnFailureListener { e ->
                  Log.e(TAG, “Failed to store bytes”, e)
                }
          } else {
            Log.d(TAG, "E2EE is not available, only store bytes for D2D restore.")
          }
        }

วิธีทดสอบ

ใช้วิธีการต่อไปนี้ระหว่างการพัฒนาเพื่อทดสอบขั้นตอนการกู้คืน

ถอนการติดตั้ง/ติดตั้งอุปกรณ์เดียวกัน

หากผู้ใช้เปิดใช้บริการการสํารองข้อมูล (ตรวจสอบได้ที่การตั้งค่า > Google > การสํารองข้อมูล) ข้อมูลการบล็อกใน Store จะมีผล ถอนการติดตั้ง/ติดตั้งอีกครั้ง

โปรดทําตามขั้นตอนต่อไปนี้เพื่อทดสอบ

  1. ผสานรวม BlockStore API ลงในแอปทดสอบ
  2. ใช้แอปทดสอบเพื่อเรียกใช้ BlockStore API เพื่อจัดเก็บข้อมูล
  3. ถอนการติดตั้งแอปทดสอบแล้วติดตั้งแอปบนอุปกรณ์เดียวกันอีกครั้ง
  4. ใช้แอปทดสอบเพื่อเรียกใช้ BlockStore API เพื่อดึงข้อมูลของคุณ
  5. ตรวจสอบว่าไบต์ที่ดึงมานั้นเหมือนกับพื้นที่เก็บข้อมูลก่อนถอนการติดตั้ง

อุปกรณ์ต่ออุปกรณ์

ในกรณีส่วนใหญ่ คุณจะต้องรีเซ็ตอุปกรณ์เป้าหมายเป็นค่าเริ่มต้น คุณสามารถป้อนขั้นตอนการกู้คืนแบบไร้สายของ Android หรือการคืนค่าสายของ Google (สําหรับอุปกรณ์ที่สนับสนุน)

กู้คืนระบบคลาวด์

  1. ผสานรวม Blockstore API ในแอปทดสอบ แอปทดสอบจะต้องส่งไปยัง Play Store
  2. ในอุปกรณ์ต้นทาง ให้ใช้แอปทดสอบเพื่อเรียกใช้ Blockstore API เพื่อเก็บข้อมูล โดยควรตั้งค่า BackBackToCloud เป็น "จริง"
  3. สําหรับอุปกรณ์ O ขึ้นไป คุณเรียกใช้การสํารองข้อมูลในระบบคลาวด์ของ Store Store ด้วยตนเองได้ ไปที่การตั้งค่า > Google > การสํารองข้อมูล คลิกปุ่ม “สํารองข้อมูลเลย”
    1. หากต้องการตรวจสอบว่าการสํารองข้อมูลระบบคลาวด์ของ Block Store สําเร็จหรือไม่ ให้ทําดังนี้
      1. หลังจากสํารองข้อมูลเรียบร้อยแล้ว ให้ค้นหาบรรทัดในบันทึกที่มีแท็ก "CloudSyncBpTkSvc"
      2. คุณควรเห็นบรรทัดในลักษณะนี้: “......, CloudSyncBpTkSvc: sync result: SUCCESS, ..., uploaded size: XXX bytes ...”
    2. หลังการสํารองข้อมูลในระบบคลาวด์ของ Store Store จะมีระยะเวลา "พัก" 5 นาที ภายใน 5 นาที การคลิกปุ่ม "สํารองข้อมูลเลย" จะไม่ทริกเกอร์ การสํารองข้อมูลในระบบคลาวด์อีกรายการของ Block Store
  4. รีเซ็ตอุปกรณ์เป้าหมายเป็นค่าเริ่มต้นและทําขั้นตอนในการกู้คืนระบบคลาวด์ เลือกเพื่อคืนค่าแอปทดสอบระหว่างขั้นตอนการกู้คืน ดูข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนการคืนค่าระบบคลาวด์ในขั้นตอนการคืนค่าในระบบคลาวด์ที่รองรับ
  5. ในอุปกรณ์เป้าหมาย ให้ใช้แอปทดสอบเพื่อเรียกใช้ Blockstore API เพื่อเรียกข้อมูลของคุณ
  6. ยืนยันว่าไบต์ที่ดึงมาตรงกับที่เก็บไว้ในอุปกรณ์ต้นทาง

ข้อกําหนดของอุปกรณ์

การเข้ารหัสจากต้นทางถึงปลายทาง

  • การเข้ารหัสจากต้นทางถึงปลายทางได้รับการสนับสนุนในอุปกรณ์ที่ใช้ Android 9 (API 29) ขึ้นไป
  • อุปกรณ์ต้องตั้งค่าการล็อกหน้าจอด้วย PIN, รูปแบบ หรือรหัสผ่าน เพื่อเปิดใช้การเข้ารหัสจากต้นทางถึงปลายทางและเข้ารหัสข้อมูลของผู้ใช้อย่างถูกต้อง

ขั้นตอนการคืนค่าอุปกรณ์ในอุปกรณ์

ในการคืนค่าอุปกรณ์จะต้องใช้อุปกรณ์ต้นทางและอุปกรณ์เป้าหมาย อุปกรณ์ทั้งสองจะเป็นเครื่องรับส่งข้อมูล

อุปกรณ์ต้นทางต้องใช้ Android 6 (API 23) ขึ้นไปเพื่อสํารองข้อมูล

อุปกรณ์เป้าหมายที่ใช้ Android 9 (API 29) ขึ้นไปจะสามารถคืนค่าได้

คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนการคืนค่าอุปกรณ์ได้ที่นี่

ขั้นตอนการสํารองและกู้คืนระบบคลาวด์

การสํารองและกู้คืนข้อมูลในระบบคลาวด์จะต้องใช้อุปกรณ์ต้นทางและอุปกรณ์เป้าหมาย

อุปกรณ์ต้นทางต้องใช้ Android 6 (API 23) ขึ้นไปเพื่อสํารองข้อมูล

ระบบรองรับอุปกรณ์เป้าหมายตามผู้ให้บริการ อุปกรณ์ Pixel ใช้ฟีเจอร์นี้ได้จาก Android 9 (API 29) และอุปกรณ์อื่นๆ ทั้งหมดต้องใช้ Android 12 (API 31) ขึ้นไป