Panduan pembangunan aplikasi ringan
Pengenalan
Apakah itu aplikasi ringan?
Aplikasi ringan ialah satu set rangka kerja asas dan perkhidmatan akses (Fokus Pada Mudah Alih) yang disediakan oleh Weibo untuk perkhidmatan pihak ketiga (halaman H5) untuk mengakses Weibo.
Pintu masuk aplikasi ringan berada di Halaman Weibo (juga dipanggil halaman Profil, halaman utama peribadi), atau Kad Weibo, dan dibangunkan oleh pihak akses dalam bentuk aplikasi web.
Mengikut platform paparan, aplikasi ringan dibahagikan kepada dua jenis: dibenamkan melalui iframe pada pelayar desktop (selepas ini dirujuk sebagai Versi web), dan dipaparkan melalui Webview dalam pelanggan Weibo (selepas ini dirujuk sebagai versi H5 ). Apl anda boleh memilih salah satu daripada dua platform paparan atau ia boleh menyokong kedua-duanya.
Ciri
Aplikasi ringan menyediakan lebih banyak saluran yang dekat dengan pengguna selaras dengan atribut platform Weibo, menggalakkan pembentukan hubungan dua hala antara pengguna dan pedagang, dan membolehkan pengguna menemui dan menggunakan perkhidmatan dengan lebih berkesan .
- • Akses yang mudah. Halaman web H5 yang mengakses hanya perlu melakukan sedikit kerja keserasian untuk Weibo, dan ia boleh menikmati perkhidmatan aplikasi ringan satu sistem yang disediakan oleh pelanggan rasmi, sekali gus memberikan pengguna pengalaman yang lebih baik
- • Tiada kebenaran diperlukan . Jika pengguna mengakses aplikasi semasa log masuk, rangka kerja baharu akan melengkapkan kebenaran secara lalai dan menghantar maklumat access_token kepada pihak akses.
- • Lebih banyak peluang pendedahan. Selepas aplikasi dilancarkan, ia akan muncul pada halaman Halaman dan kad aliran suapan Weibo. Sokong akses kad pautan untuk paparan yang lebih baik di Weibo.
- • Proses pembangunan menyatukan kaedah akses dan parameter. Sama ada versi Web atau versi H5, parameter yang diterima oleh pelanggan adalah sama, dan kaedah capaian pada dasarnya adalah sama. Aplikasi ini boleh membezakan sama ada versi Web atau versi H5 melalui userAgent pelayar.
- • Menyokong akses kepada pembayaran Weibo dan menyelesaikan pembayaran produk dengan satu klik.
- •[Versi web]Perkongsian dan suka aplikasi baharu. Kongsi aplikasi terus ke Weibo dan jana paparan kad untuk penyebaran pantas.
- •[Versi web]Menyokong akses kepada aplikasi tanpa log masuk. Anda boleh menyemak imbas aplikasi tanpa log masuk ke Weibo Apabila perlu, gunakan tindanan log masuk melalui klien JS kami.
- • [Versi web]Saiz apl diubah kepada 940 px. 760px asal tidak disokong dan 950px asal ditukar kepada 940px.
Senario aplikasi ringan
Sesetengah aplikasi ringan lebih menonjol dalam halaman dalaman, seperti filem dan buku Mungkin anda ingin melihat kad terus dalam strim Weibo. Beli terus dari halaman utama
Sesetengah aplikasi lebih menonjol pada halaman utama aplikasi, seperti permainan web dan aplikasi satu halaman, dan anda boleh bermain dengan mengklik pada halaman utama aplikasi
Atau gabungan kedua-duanya adalah mungkin.
Contoh aplikasi
Kedai 4S dalam talian (kedua-dua versi Web & H5 disambungkan):
Versi H5:
H5 versi:
- Lagi Untuk pengenalan kepada aplikasi ringan, sila klik di sini. Proses pembangunan aplikasi ringan
- Pembangunan aplikasi ringan secara kasar dibahagikan kepada empat langkah:
• Menjadi pembangun Weibo
Seperti yang ditunjukkan dalam gambar di bawah:
Jika anda bukan pembangun Weibo lagi, sila log masuk ke platform terbuka Weibo dahulu, dan kemudian masuk ke pusat pengurusan untuk melengkapkan maklumat asas pembangun dan pengesahan identiti.
Lulus pengesahan identiti akan memudahkan semakan permohonan dan permohonan untuk pelbagai kebenaran, sila isi dengan teliti.
Menaik taraf daripada pembangun individu kepada pemaju syarikat
Jika anda sudah menjadi pembangun individu, anda perlu memasuki halaman maklumat pembangun edit, pilih semula jenis pembangun kepada syarikat, dan kemudian simpan maklumat tersebut.
Selepas mengisi borang, anda secara automatik akan melompat ke konsol aplikasi, di mana anda boleh menambah baik maklumat asas permohonan itu.
Edit maklumat apl
Buka maklumat apl->Maklumat asas untuk melihat data asas apl. Klik Edit untuk membuat perubahan.
Alamat ujian (versi Web, versi H5)
Buka maklumat permohonan->Maklumat ujian, anda boleh lihat alamat ujian permohonan. Oleh kerana aplikasi itu belum lulus semakan dan telah dilancarkan ke App Plaza, alamat ini hanya boleh diakses oleh pembangun sendiri.
Jika anda memerlukan pengguna Weibo lain untuk menyemak imbas, anda boleh menambahkan pengguna Weibo ke akaun ujian. Anda boleh menambah sehingga 15 orang bagi setiap akaun ujian apl.
Selepas permohonan lulus semakan copywriting dan dilancarkan di petak, akaun ujian akan tamat tempoh secara automatik.
Naik taraf kepada aplikasi ringan
Naik taraf terutamanya merujuk kepada peningkatan aplikasi perusahaan, aplikasi tapak atau aplikasi Halaman peribadi yang telah berjaya dicipta untuk menyalakan aplikasi.
Memandangkan kunci aplikasi aplikasi telah dibuat, peningkatan terutamanya merangkumi dua aspek: pertama, latar belakang platform terbuka Weibo menaik taraf kunci aplikasi kepada jenis aplikasi ringan kedua, aplikasi menukar parameter lama yang asalnya diterima kepada parameter baharu.
Pembangunan Aplikasi
Nota: Bahagian ini mengandungi semua butiran pembangunan aplikasi, sila pilih mengikut situasi sebenar permohonan.
- • Untuk aplikasi yang hanya perlu memaparkan halaman dalaman, sila lihat cara mengakses bahagian pembayaran Weibo
- • Untuk aplikasi yang hanya perlu memaparkan halaman utama, sila mula membaca dari bahagian parameter bingkai penerima
- • Untuk kedua-duanya, sila baca sepenuhnya.
Selepas aplikasi dibuat, anda perlu memasuki proses pembangunan aplikasi. Pembangunan aplikasi sebenarnya tidak rumit, ia hanya cara mengendalikan parameter yang diluluskan oleh rangka kerja Weibo dan melakukan pemprosesan yang sepadan, yang akan melibatkan beberapa isu:
Pembangunan laman utama aplikasi:
- menerima parameter bingkai
- Perbezaan antara versi Web dan versi H5
- Menggunakan pakej JavaScript versi Web
- Cara memanggil API JS klien Weibo dalam versi H5
Pembangunan halaman aplikasi dalaman:
- Cara mengakses pembayaran Weibo
- Cara Mengakses kad pautan
Naik taraf apl kepada aplikasi ringan
- Panduan migrasi aplikasi perusahaan
Proses teknikal
Terima parameter bingkai
Rangka kerja aplikasi akan menghantar parameter yang disulitkan signed_request ke halaman pihak mengakses melalui POST. Parameter termasuk uid, access_token dan maklumat lain Jika aplikasi perlu menggunakannya, ia perlu dinyahsulit sebelum ia boleh digunakan.
Jika ia adalah aplikasi paparan semata-mata, anda boleh mengabaikan parameter ini.
Satu perkara yang memerlukan perhatian khusus ialah parameter signed_request dihantar dalam mod POST Jika halaman pihak yang mengakses tidak menyokong penerimaan POST, ia mungkin tidak dipaparkan dengan betul. Kaedah penyulitan
signed_request
signed_request dibahagikan kepada dua segmen dengan titik perpuluhan Sebelum titik perpuluhan ialah 🎜semak data🎜, dan selepas titik perpuluhan ialah 🎜data sebenar🎜. Data pengesahan digunakan untuk memastikan kesahihan data Contohnya, ia tidak diusik Hanya data sebenar yang telah berjaya disahkan boleh dipercayai. 🎜Kedua-duanya menggunakan pengekodan base64, jadi data perlu dipulihkan terlebih dahulu. Sesetengah aksara data base64 mungkin keliru dengan aksara lain dalam URL semasa penghantaran HTTP Oleh itu, rentetan base64 yang diperoleh oleh pembangun telah diproses khas. Oleh itu, sebelum penyahkodan base64, rentetan perlu dipulihkan kepada aksara asas64 standard.
还原方式:先根据字符串长度补上相应长度的等号(补上等号后的字符串长度应该是 4 的整数倍),然后将其中所有的 - 替换成 +,所有 _ 替换成 /。
Selepas penyahkodan base64, data sebenar ditukar kepada objek JSON, iaitu maklumat yang diperlukan oleh pembangun Setiap parameter akan diperkenalkan secara terperinci di bawah.
Bagaimana untuk menggunakan data pengesahan?
Mula-mula, semak algoritma dalam pangkalan data sebenar64 yang dinyahkodkan JSON, ia mestilah HMAC-SHA256.
Kedua, sahkan melalui data pengesahan Kaedah pengesahan adalah seperti berikut:
- Selepas base64 menyahkod data pengesahan (ia mungkin aksara bercelaru, jangan risau), simpannya dalam pembolehubah untuk perbandingan seterusnya.
- Gunakan rahsia aplikasi aplikasi untuk penyulitan sha256 pada data sebelum penyahkodan base64 Data yang disulitkan dan data pengesahan selepas penyahkodan base64 mesti konsisten untuk memastikan kesahihan data.
Oleh itu, kaedah penyahsulitan signed_request sudah boleh ditulis.
Gunakan SDK untuk penyahsulitan data
Antara banyak SDK pada platform terbuka Weibo, PHPSDK dan JavaSDK mempunyai fungsi penyahkod_permintaan_tandatangan terbina dalam dan boleh digunakan terus. Bahasa lain perlu dilengkapkan oleh pembangun sendiri.
Gunakan PHPSDK untuk mengekstrak parameter daripada signed_request
if(!empty($_POST["signed_request"])){ $o = new SaeTOAuth( WB_AKEY , WB_SKEY ); $data = $o->parseSignedRequest($_REQUEST["signed_request"]); if($data == '-2'){ die('sign is error!'); } else { $_SESSION['oauth2'] = $data; } }
PHPSDK Kaedah menyahsulit signed_request adalah seperti berikut, untuk rujukan dalam bahasa lain
/** * 解析 signed_request * @param string $signed_request 应用框架在加载iframe时会通过向Canvas URL post的参数signed_request * @return array */ function parseSignedRequest($signed_request) { // 将 $signed_request 参数,用小数点.分隔成数组,下标0的赋值给 $encoded_sig,下标1的复制给 $payload list($encoded_sig, $payload) = explode('.', $signed_request, 2); // 对 $encoded_sig 进行 base64 解码,然后赋值给 $sig $sig = self::base64decode($encoded_sig); // 对 $payload 进行 base64 解码,并将字符串转为 JSON 赋值给 $data $data = json_decode(self::base64decode($payload), true); // 如果 $data 中的 algorithm 不是 HMAC-SHA256,表示数据校验出错,直接返回 -1 if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') return '-1'; // 使用 app secret 对 $payload 进行 sha256 加密 $expected_sig = hash_hmac('sha256', $payload, $this->client_secret, true); // 如果 sha256 加密后的结果和 $sig 是一致的,那么 $data 数据就没问题,直接返回给调用方;否则>表示数据校验出错,返回 -2 return ($sig !== $expected_sig)? '-2' : $data; } /** * @ignore */ function base64decode($str) { // 将需要 base64 解码的字符串,按照字符串长度先补上相应的等号(补上等号后的字符串长度应该是4>的整数倍),然后将其中的 - 和 _ 分别替换成 + 和 /,然后对处理后的字符串执行 base64 解码 return base64_decode(strtr($str.str_repeat('=', (4 - strlen($str) % 4)), '-_', '+/')); }
signed_request decrypted_request parameterformat permohonan yang ditandatangani🜜dilogam🜎
Ogos Alamat pengurusan aplikasi ringan yang dibuat selepas 1 hari akan memuatkan alamat aplikasi kunci aplikasi secara lalai Jika pihak ketiga perlu menguruskan alamat, sila buat lompatan kedua mengikut medan yang dikembalikan oleh asal
Status log masuk ke. akses aplikasi, parameter kejayaan kebenaran automatikDalam maklumat asas aplikasi, anda boleh memilih sama ada versi Web atau versi H5, atau kedua-duanya serasi. Jika kedua-duanya serasi, adalah perlu untuk membezakan antara versi Web dan versi H5.
Perbezaan ini mempunyai dua tujuan: satu adalah untuk membolehkan aplikasi menyesuaikan diri dengan peranti yang berbeza untuk mencapai kesan paparan terbaik ialah pakej Javascript yang dipanggil oleh versi Web dan versi H5 adalah berbeza kurangkan kod JS yang tidak perlu.
Aplikasi pada masa ini boleh dibezakan oleh Ejen pengguna penyemak imbas Sama ada ia dipaparkan dalam pelayar web atau klien Weibo adalah satu-satunya cara pada masa ini.
Penggunaan pakej JavaScript versi Web
Versi Web membenamkan aplikasi pengakses melalui iframe Selain menerima parameter POST bingkai, ia juga perlu berkomunikasi dengan bingkai, seperti: iframe. sangat adaptif, mendapatkan maklumat halaman induk, Membangkitkan lapisan terapung log masuk, dsb.
Ini disediakan melalui fail JavaScript yang disediakan oleh rangka kerja Untuk kegunaan tertentu, sila baca panggilan komponen versi web komponen aplikasi ringan.
Versi H5 Cara memanggil API JS pelanggan Weibo
Sejak klien Weibo 4.3.0, fungsi API JS baharu telah ditambahkan pada Webview untuk memudahkan aplikasi web memanggil beberapa fungsi sistem melalui JS API. Contohnya: mendapatkan status rangkaian, maklumat kedudukan, mengimbas kod QR, melihat gambar besar dan fungsi lain.
Untuk penggunaan terperinci, sila baca: Penggunaan komponen versi H5 komponen aplikasi ringan.
Cara mengaktifkan pembayaran Weibo
Pada masa ini pembayaran Weibo hanya menyokong akses luar talian yang memerlukan akses, sila hubungi wangwei16@staff.weibo.com.
Selepas mengakses pembayaran Weibo, anda boleh memohon akses kad pautan produk.
Cara mengakses analisis kad pautan
Nota: Pada masa ini, untuk mengakses kad pautan komoditi, anda mesti terlebih dahulu mengakses pembayaran Weibo Sila hubungi wangwei16@staff.weibo.com untuk memohon akses kepada pembayaran Weibo.
Apakah kad pautan
Jika Weibo mengandungi pautan, ia akan dipaparkan sebagai pautan pendek, seperti yang ditunjukkan dalam gambar:
Jika pautan dihuraikan sebagai pautan pendek khas yang mengandungi data objek , maka data objek boleh dipaparkan dalam bentuk kad dalam aliran mesej Weibo. Borang ini ialah Weibo
Penghuraian kad pautan aliran mesej.
Pautan yang dihuraikan akan digantikan dengan kad mini, yang akan menjadikan paparan lebih kaya dan berkuasa serta mempunyai kadar klik lalu yang lebih tinggi. Di bawah teks Weibo, kad pautan biasanya dihuraikan, yang boleh memaparkan lakaran kecil, tajuk, pengenalan dan maklumat lain. Kesan analisis adalah seperti berikut:
Kad pautan ialah borang yang diperlukan untuk mengakses pautan tapak web pihak untuk menjalankan fungsi tertentu di Weibo Bergantung pada kad pautan, anda boleh mencapai kesan seperti main balik terus pautan video, mendengar terus pautan audio dan memuatkan terus aplikasi ringan.
Apabila pengguna berkongsi pautan ke tapak web pihak akses di Weibo, kami akan menggunakan ciri pautan untuk mengenal pasti sama ada pautan itu milik pihak akses aplikasi ringan tertentu. Untuk pautan pihak akses aplikasi ringan, kami akan memanggil antara muka panggil balik penghuraian yang didaftarkan oleh pihak akses untuk mendapatkan data objek dalam format yang telah dipersetujui sebelumnya. Pautan ini yang berjaya memperoleh data objek boleh dipaparkan sebagai kad pautan pada PC dan pelanggan mudah alih, dan rangka kerja aplikasi ringan boleh dimuatkan selepas pengguna mengklik.
Kelebihan: Pihak akses hanya perlu membangunkan antara muka panggil balik mengikut proses standard dan standard untuk mencapai akses pantas.
Kelemahan: Pihak akses ialah akses pasif, dan antara muka panggil balik mempunyai kadar kegagalan, yang boleh menyebabkan penghuraian kad pautan bagi pautan individu gagal.
Bagaimana untuk mengakses kad pautan?
Untuk menyerahkan permohonan di luar talian, hubungi wangwei16@staff.weibo.com.
Apa yang perlu dilakukan oleh pihak akses kad pautan
Mari kita lihat aliran kerja kad pautan dahulu:
Penerangan terperinci 1 dan 2 dalam rajah adalah seperti berikut:
1 Pihak akses menyediakan peraturan pemadanan URL yang panjang
Peraturan pemadanan URL yang panjang ialah ungkapan biasa yang ringkas akan ditukar kepada pautan pendek Digunakan sebagai parameter untuk memanggil antara muka panggil balik data objek pihak akses, iaitu nama domain pautan dan ciri-ciri lain dalam rajah.
Sebagai contoh, jika kita ingin menghuraikan produk sebagai kad pautan, URL pautan panjang produk ialah: http://www.productmall.com/sample/256819, maka peraturan pemadanan URL yang panjang hendaklah: www. productmall.com/sample/ . (Sila ambil perhatian bahawa http:// tidak disertakan dan nombor produk berubah-ubah tidak disertakan)
2 Pihak akses menyediakan antara muka panggil balik untuk menghuraikan data objek
Antara muka ini dibangunkan oleh pihak akses. Apabila platform Weibo melepasi peraturan pemadanan URL yang panjang di atas, URL panjang yang sepadan akan memanggil antara muka pihak akses ini apabila memindahkan ke pautan pendek dan parameternya ialah URL panjang yang sepadan.
Apabila pihak akses menentukan bahawa URL parameter ialah halaman yang betul yang perlu dihuraikan sebagai kad pautan, antara muka mengembalikan data objek yang perlu dihuraikan Secara teorinya, URL parameter yang berbeza mengembalikan data objek yang berbeza. Jika tidak, jika antara muka mengembalikan ralat, platform Weibo akan menganggap bahawa pautan itu bukan objek kad pautan biasa, dan akan menukarnya kepada pautan pendek biasa tanpa melakukan analisis kad pautan.
Antara muka data objek
Kaedah permintaan antara muka: DAPATKAN Parameter antara muka: url, URL panjang yang memenuhi peraturan padanan Nilai pulangan antara muka: JSON Medan atribut khusus data JSON ditunjukkan dalam jadual berikut:
Antara atribut di atas, objek jenis, tatasusunan objek dan pautan media semuanya mengandungi atribut peringkat rendah penerangan adalah seperti berikut:
imej (pautan media)
teg (susun atur objek)
Contohnya:
Peraturan pemadanan URL panjang yang disediakan oleh pihak akses: www.productmall.com
Sampel pautan: http ://www.productmall.com/sample/256819
Antara muka panggil balik data objek yang disediakan oleh pihak akses: http://www.productmall.com/api/get_data?url=
Kemudian contoh panggilan kami ialah: http://www.productmall.com/api/get_data?url=http%3a%2f%2fwww.productmall.com%2fsample%2f256819
Data yang dikembalikan oleh pihak akses adalah seperti berikut:
(1) Lakukan tidak bersambung kepada pelanggan rasmi Fungsi panggil balik kod QR pelanggan
{ "display_name": "这是商品的标题", "image": { "url": "http://www.productmall.com/7272.jpg", "width": 120, "height": 120 }, "summary": "这是商品的简介", "url": "http://www.productmall.com/sample/256819.html", "tags": [ { "display_name": "标签1" } ], "create_at": "2012-10-18", "object_type": "product" }
(2) Akses fungsi ingat balik kod QR pelanggan rasmi (jika pihak akses terpakai, platform terbuka akan memberikan nama domain kepada pihak akses Idnya ialah 1456439003)
{ "display_name": "这是商品的标题", "id": "1456439003:www_productmall_com_sample_256819", "image": { "url": "http://www.productmall.com/7272.jpg", "width": 120, "height": 120 }, "summary": "这是商品的简介", "url": "http://www.productmall.com/sample/256819.html", "tags": [ { "display_name": "标签1" } ], "create_at": "2012-10-18", "object_type": "product" }
Panduan Migrasi Aplikasi Perusahaan (Naik taraf kepada Aplikasi Ringan)
Perubahan paling intuitif antara aplikasi perusahaan dan aplikasi ringan ialah kesan visual tidak lagi mempunyai kepala yang dibesar-besarkan (avatar besar, gambar profil, tab, dll.) dan fokus lebih lanjut mengenai paparan kandungan.
Untuk menaik taraf aplikasi perusahaan kepada aplikasi ringan, anda perlu melakukan dua perkara:
1. Untuk menambahkan kunci aplikasi pada senarai migrasi, anda boleh menghubungi e-mel perkhidmatan pelanggan: weibo_app@vip.sina.com
2.
- Parameter kini ditukar kepada penghantaran POST dan disulitkan untuk cara menyahsulit, sila rujuk bahagian parameter bingkai penerima.
- Selepas aplikasi perusahaan dinaik taraf kepada aplikasi ringan, nama parameter juga akan berubah. Hubungan sepadan antara parameter lama dan baharu adalah seperti berikut:
Peraturan kod QR pelanggan Weibo
Gunakan imej kod QR yang dihasilkan oleh peraturan ini, anda boleh terus mengimbas dengan pelanggan Weibo masukkan teks objek dan bukannya penyemak imbas lalai terbina dalam. Sila lihat perbezaan di bawah:
Uji peraturan permohonan (digunakan sebelum ke petak):
- Kod QR yang dijana pada halaman utama aplikasi: http://apps.weibo.com/ qrcode/ test?uid=xxx&appkey=xxx (algoritma appkey di sini ialah appkey selepas base62)
- Tiada alamat ujian pada halaman dalaman aplikasi, ia akan menjadi alamat rasmi selepas disimpan dalam pangkalan data
Peraturan alamat rasmi (digunakan selepas pergi ke petak):
- Kod QR yang dijana oleh halaman utama aplikasi: http://apps.weibo.com/qrcode/app?uid=xxx&appkey=xxx (algoritma appkey di sini ialah kunci aplikasi selepas base62)
- Kod QR yang dijana oleh halaman dalaman aplikasi: http ://apps.weibo.com/qrcode/linkcard?oid=xxx (oid di sini ialah id yang dijana selepas objek dimasukkan ke dalam perpustakaan kad pautan)
Aplikasi ringan Demo versi H5
Sila gunakan klien Weibo untuk mengimbas demo paparan kod QR di bawah Demo:
Untuk butiran antara muka yang terlibat dalam Demo, sila lihat dokumen berikut:
Dokumen Komponen Aplikasi Ringan: http://open.weibo.com/wiki/Light Application H5 Versi Baharu JS
Aplikasi Pembayaran Weibo Panduan Akses: http://open.weibo.com/wiki/Panduan Akses Aplikasi Pembayaran Weibo
Dokumen Antaramuka API Weibo: http://open.weibo.com/wiki/Weibo API
Semakan dan pelancaran aplikasi
Selepas permohonan dibangunkan, ia perlu diserahkan untuk semakan permohonan. Masukkan platform terbuka Weibo, log masuk dan buka aplikasi, dan anda akan melihat pintu masuk untuk diserahkan untuk semakan.
Permohonan ringan perlu dihantar ke Plaza untuk semakan, pergi ke Pusat Pengurusan Peranti Blue V -> pemasangan, apps.weibo akan dijana Untuk alamat yang bermula dengan .com/uid/xxx, sila gunakan alamat ini untuk mempromosikan di Weibo Hanya alamat ini akan dihuraikan secara automatik ke dalam bentuk kad di Weibo.
Spesifikasi semakan permohonan yang ringan
Servis dan sokongan
Jika anda menghadapi masalah semasa proses akses permohonan ringan, sila hubungi wangwei16@staff.weibo.com