Topik ini menjelaskan cara menyiapkan layanan transfer data langsung berbasis Object Storage Service (OSS) untuk aplikasi seluler dan mengonfigurasi callback pengunggahan.
Informasi latar belakang
Siapkan Transfer Data Langsung untuk Aplikasi Seluler menjelaskan cara menyiapkan layanan transfer data langsung berbasis OSS untuk aplikasi seluler. Setelah layanan transfer langsung berbasis OSS disiapkan untuk aplikasi Android atau iOS, token Security Token Service (STS) diterbitkan kepada pengguna aplikasi ketika mereka mengirim permintaan unggah. Pengguna aplikasi dapat menggunakan token STS untuk mengunggah data ke OSS beberapa kali hingga token menjadi tidak valid. Akibatnya, server aplikasi tidak dapat mengidentifikasi data yang diunggah oleh pengguna aplikasi, sehingga mempersulit manajemen data bagi pengembang aplikasi. Untuk mengatasi masalah ini, OSS menyediakan fitur callback pengunggahan.
Prosedur
Gambar berikut menunjukkan cara kerja callback pengunggahan.
Setelah OSS menerima permintaan unggah dari aplikasi Android atau iOS (Langkah 5), OSS memicu tugas callback pengunggahan (Langkah 6) untuk mengirim permintaan callback ke server aplikasi. Kemudian, server aplikasi mengembalikan respons ke OSS, dan OSS mengirim hasil unggahan ke aplikasi Android atau iOS berdasarkan respons tersebut (Langkah 7). Untuk informasi lebih lanjut, lihat Callback.
Tujuan
Anda dapat menggunakan callback pengunggahan untuk mengirim informasi dasar tentang objek yang diunggah ke server aplikasi.
Tabel berikut menjelaskan variabel yang dapat disertakan dalam informasi dasar yang dikembalikan. Format konten yang dikembalikan ditentukan saat objek diunggah menggunakan aplikasi Android atau iOS.
Variabel sistem
Deskripsi
bucket
Bucket tempat objek diunggah menggunakan aplikasi seluler.
object
Nama objek setelah objek diunggah ke OSS menggunakan aplikasi seluler.
etag
ETag objek yang diunggah, yaitu bidang ETag yang termasuk dalam hasil unggahan yang dikembalikan kepada pengguna aplikasi seluler.
size
Ukuran objek yang diunggah.
mimeType
Jenis data yang diunggah.
imageInfo.height
Tinggi gambar yang diunggah.
imageInfo.width
Lebar gambar yang diunggah.
imageInfo.format
Format gambar yang diunggah. Contoh: JPG dan PNG.
Anda dapat menggunakan callback pengunggahan untuk menentukan parameter callback kustom untuk server aplikasi guna mendapatkan informasi tentang klien aplikasi.
Sebagai contoh, jika Anda adalah pengembang aplikasi dan ingin mendapatkan informasi tentang versi aplikasi, versi sistem operasi, koordinat GPS, dan model ponsel, Anda dapat menentukan parameter kustom berikut untuk aplikasi saat objek diunggah menggunakan aplikasi Android atau iOS:
x:version: versi aplikasi
x:system: versi sistem operasi
x:gps: koordinat GPS
x:phone: model ponsel
Setelah Anda mengonfigurasi parameter sebelumnya, parameter ini dibawa ketika klien aplikasi Android atau iOS mengunggah objek ke OSS. Kemudian, OSS menyertakan parameter ini dalam callbackBody dan mengirim callbackBody ke server aplikasi. Dengan cara ini, server aplikasi menerima informasi tentang klien aplikasi.
Persyaratan pada server aplikasi untuk callback pengunggahan
Layanan yang menerima permintaan POST telah diterapkan. Layanan ini harus memiliki alamat IP publik. Contoh:
http://example.com/callback.php.Layanan ini harus merespons OSS dengan benar, dan respons harus dalam format JSON. Anda dapat menentukan respons kustom. OSS mengembalikan respons dari server aplikasi ke aplikasi Android atau iOS. Untuk informasi lebih lanjut, lihat Callback.
Konfigurasikan permintaan callback pengunggahan di sisi aplikasi seluler
Untuk memicu callback pengunggahan saat OSS menerima permintaan unggah, Anda harus membuat permintaan unggahan di aplikasi seluler untuk menyertakan konten berikut dalam permintaan unggahan:
callbackUrl: URL server aplikasi ke mana permintaan callback dikirim, seperti
http://example.com/callback.php. URL ini harus dapat diakses melalui Internet.callbackBody: variabel sistem sebelumnya yang dikembalikan oleh OSS ke server aplikasi. Anda dapat menentukan satu atau lebih variabel yang dikembalikan dalam callbackBody.
Sebagai contoh, jika Anda adalah pengembang aplikasi, dan URL server aplikasi adalah http://example.com/callback.php, Anda ingin mendapatkan nama objek dan ukuran serta menentukan x:phone sebagai model ponsel dan x:system sebagai versi sistem operasi.
Berikut ini menjelaskan dua jenis permintaan untuk callback pengunggahan:
Contoh permintaan callback pengunggahan pada aplikasi iOS:
OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"]; // Konfigurasikan parameter callback. request.callbackParam = @{ @"callbackUrl": @"http://example.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}" }; // Tentukan variabel. request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" };Contoh permintaan callback pengunggahan pada aplikasi Android:
PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://example.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&phone=${x:phone}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "iPhone 6s"); put("x:system", "YunOS5.0"); } });
Contoh permintaan callback pengunggahan yang diterima oleh server aplikasi
Permintaan callback pengunggahan yang diterima oleh server aplikasi bervariasi berdasarkan konfigurasi sebelumnya dari callbackUrl dan callbackBody. Contoh:
POST /index.html HTTP/1.0
Host: 203.0.113.0
Connection: close
Content-Length: 81
Content-Type: application/x-www-form-urlencoded
User-Agent: ehttp-client/0.0.1
authorization: kKQe**************/kdD1ktNVgbWE**************
x-oss-pub-key-url: aHR0**************
filename=test.txt&size=5&phone=iphone6s&system=ios9.1Untuk informasi lebih lanjut, lihat Callback.
Server aplikasi menentukan apakah permintaan callback pengunggahan dikirim dari OSS
Jika server aplikasi Anda diserang dan menerima permintaan tidak valid, server aplikasi perlu menentukan apakah permintaan callback dikirim dari OSS.
Untuk menentukan apakah permintaan callback dikirim dari OSS, server aplikasi melakukan verifikasi tanda tangan RSA pada header respons x-oss-pub-key-url dan authorization yang dikirim oleh OSS. Hanya permintaan callback yang lolos verifikasi tanda tangan RSA yang dikirim dari OSS. Program sampel yang disediakan dalam topik ini mencakup header untuk verifikasi tanda tangan RSA sebagai referensi Anda.
Server aplikasi memproses permintaan callback
Setelah server aplikasi menentukan bahwa permintaan callback dikirim dari OSS, format permintaan callback ke server aplikasi ditentukan. Contoh:
filename=test.txt&size=5&phone=iphone6s&system=ios9.1Server aplikasi dapat menguraikan konten yang dikirim oleh OSS untuk mendapatkan data yang diinginkan. Setelah data diperoleh, server aplikasi dapat menyimpan data untuk manajemen selanjutnya.
OSS memproses respons dari server aplikasi
Salah satu skenario berikut mungkin terjadi:
OSS mengirim permintaan callback ke server aplikasi. Server aplikasi gagal menerima permintaan atau tidak dapat diakses. Dalam hal ini, OSS mengirim kode status HTTP 203 ke aplikasi Android atau iOS. Namun, data telah disimpan di OSS.
Server aplikasi menerima permintaan callback dari OSS dan merespons OSS dengan benar. Dalam hal ini, OSS mengembalikan kode status HTTP 200 dan respons dari server aplikasi ke aplikasi Android atau iOS.
Unduh program sampel
Program sampel hanya memeriksa tanda tangan yang diterima oleh server aplikasi. Anda harus menambahkan kode secara manual yang dieksekusi untuk menguraikan format permintaan callback yang diterima oleh server aplikasi.
Java
URL Unduhan: Klik di sini.
Untuk menjalankan program sampel, ekstrak paket yang diunduh dan jalankan java -jar oss-callback-server-demo.jar 9000. 9000 adalah port default. Anda dapat mengubah nomor port.
CatatanContoh paket JAR berjalan pada OSS SDK for Java 1.7. Jika terjadi kesalahan, modifikasi kode berdasarkan kode sampel. Paket ini berisi kode untuk proyek Maven.
PHP
URL Unduhan: Klik di sini.
Untuk menjalankan program sampel, ekstrak paket yang diunduh ke lingkungan Apache. Lingkungan spesifik ini diperlukan untuk mendapatkan beberapa header karena fitur PHP tertentu. Modifikasi kode sampel berdasarkan lingkungan aktual.
Python
URL Unduhan: Klik di sini.
Untuk menjalankan program sampel, ekstrak paket yang diunduh dan jalankan python callback_app_server.py. Program ini berfungsi sebagai server HTTP sederhana. Untuk menjalankan program ini, Anda mungkin perlu menginstal dependensi untuk RSA.
Ruby
URL Unduhan: Klik di sini.
Untuk menjalankan program sampel, jalankan perintah ruby server.rb.
FAQ
Dapatkah saya mengubah URL callback dan menggunakan server lain untuk menerima callback dan memeriksa apakah pengunggahan berhasil?
Anda tidak dapat mengubah URL callback karena parameter ditandatangani dan diverifikasi oleh server OSS, dan konten yang dirusak tidak dapat melewati verifikasi.