Saya telah mencari di seluruh internet mencoba menemukan contoh sederhana yang dapat mengarahkan saya ke arah yang benar, tetapi tidak berhasil, jadi inilah pertanyaan saya:
Saya ingin masuk ke Ubuntu One dan menyinkronkan (atau hampir membaca) file dari halaman web saya, semua dilakukan dengan PHP. Semua kebutuhan untuk mencapai file dijelaskan di halaman itu: https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/
Saya dapat melengkapi permintaan pertama dengan:
$url = 'https://login.ubuntu.com/api/1.0/authentications?ws.op=authenticate&token_name=Ubuntu%20One%20@%20try1';
$data = curlPetition(array('URL'=>$url,'USERPWD'=>'user:pass'));
$ar = fopen('uOne','w');fwrite($ar,$data['responseBody']);fclose($ar);
$tokenA = json_decode($data['responseBody'],1);
Ok, curlPetition hanya membuat petisi dasar curl. Perhatikan bahwa Anda memerlukan pengguna yang valid: lulus satu akun ubuntu. Saya mendapatkan respons dengan benar di json dengan "consumer_secret", "token", "consumer_key", "name", "token_secret". Bahkan entri muncul terdaftar di aplikasi ubuntu yang diberikan seseorang.
Saya telah menginstal ekstensi php OLuth PCL yang paling baru dan berfungsi dengan baik. tetapi ketika saya mencoba untuk:
$api_url = 'https://one.ubuntu.com/api/file_storage/v1/';
$conskey = $tokenA['consumer_key'];
$conssec = $tokenA['consumer_secret'];
$token = $tokenA['token'];
$secret = $tokenA['token_secret'];
$oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
$oauth->enableDebug();
$oauth->enableSSLChecks();
$oauth->setToken($token,$secret);
$oauth->fetch($api_url.'~/Ubuntu%20One/');
print_r($oauth->getLastResponse());
Saya dipindahkan ke halaman "Transaksi OpenID sedang berlangsung" di mana Anda melewati ketika melakukan login web manual. Saya pasti melakukan sesuatu yang salah. Saya mencoba untuk mendapatkan langkah kedua dari https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/ dengan $ oauth-> fetch, $ oauth-> getAccessToken dan $ oauth-> getRequestToken, respons yang sama untuk semua dengan 403 kesalahan: S
Saya mencoba mencari cara kerja payload tetapi contoh utama ditulis dengan python, menggunakan "import ubuntuone.couch.auth as auth" yang membuat token stuff hampir otomatis.
Saya akan senang mendapatkan beberapa petunjuk. Terima kasih
sumber
Jawaban:
Saya percaya masalahnya adalah bahwa langkah 2 dari alur kerja "buat token baru", didefinisikan pada https://one.ubuntu.com/developer/account_admin/issue_tokens/cloud/ , gagal dengan 503 untuk Anda karena layanan ini turun di beberapa poin akhir pekan ini. Anda harus menjebak situasi ini dan menanganinya (503 menunjukkan bahwa Anda harus mencoba kembali permintaan nanti, sesuai standar HTTP).
Saya telah menguji PHP di bawah ini (berhati-hatilah: Saya bukan peretas PHP, jadi ini mungkin bukan kode yang paling idiomatis) dan berfungsi dengan baik untuk saya. Itu melewati tiga langkah:
Anda akan melihat setiap bagian dikomentari di bawah ini. Ingat bahwa ini meminta dan mendapatkan token baru; setelah Anda memiliki token (setelah langkah 2), simpan di suatu tempat; jangan meminta yang baru setiap saat.
sumber
Kode dari satu kelas langkah pertama untuk berbicara dengan ubuntuOne
Beberapa contoh panggilan (srry untuk gangguan dan kode komentar, mungkin dokumentasi suatu hari):
Semoga Sukses, semoga membantu
sumber
Versi yang diperbarui, beberapa fitur ditambahkan, beberapa bug ditangkap
sumber
Wow, Stuart Langridge, kamu seperti legenda bagiku !!.
Saya pikir besok saya akan menemukan sedikit waktu luang untuk meretas contoh Anda dan melihat apa yang saya dapatkan. Sementara itu saya mengerjakan beberapa fungsi berbasis Curl untuk masuk dan menjarah halaman HTML UbuntuOne. Saya akan mencoba mempostingnya di sini segera setelah saya menstabilkannya sedikit.
Ya, saya akan menulis API berbasis PHP yang hampir lengkap dan akan melihat Anda, beri saya beberapa waktu, saya agak kelebihan saat ini: S
Saya akan senang menunjukkan pekerjaan saya, mungkin suatu hari saya akan mengatasi ketakutan saya dan melamar bekerja di Canonical, itu seperti mimpi bagi saya. Untuk saat ini saya telah menulis ulasan kecil untuk menunjukkan kepada Anda proyek saya saat ini, saya akan dengan senang hati mengirimkan kepada Anda salinannya jika Anda peduli. Saya ingin merilisnya sebagai Perangkat Lunak Bebas tapi saya salah satu dari mereka yang perlu bunker proyek web dan pastikan itu aman sebelum merilisnya.
(ini bukan jenis tautan-perma, maaf) http://marcos.colorvamp.com/mongo/lain-and-ubuntu-one/
Dan jika Anda memeriksa halaman dasar ... hmm seperti yang dikatakan di tanah saya. "Di rumah pandai besi, ada pisau kayu" :-)
Terima kasih atas balasan :-)
sumber