Autentikasi aplikasi dan akun¶
Proses autentikasi Open API cTrader didasarkan pada standar OAuth 2.0.
Kerangka kerja ini memungkinkan aplikasi pihak ketiga untuk mendapatkan akses terbatas ke suatu layanan baik atas nama pemilik sumber daya, dengan mengatur interaksi persetujuan antara pemilik sumber daya dan layanan, atau dengan mengizinkan aplikasi pihak ketiga untuk mendapatkan akses atas namanya sendiri.
Alur autentikasi ¶
Sesuai dengan standar OAuth 2.0, autentikasi akun memerlukan kode otorisasi dan token akses.
Definisi token
Kode otorisasi adalah token jangka pendek yang diterbitkan untuk cTID individu. Masa berlakunya adalah satu menit. Token akses adalah token jangka panjang yang memungkinkan aplikasi untuk mengirim dan menerima pesan ke dan dari backend cTrader. Setelah menerimanya, kode otorisasi harus segera ditukar dengan token akses; setelah itu, semua pesan yang dikirim ke backend cTrader harus ditandatangani dengan token akses yang diterima untuk mengautentikasi aplikasi Anda. Masa berlaku token akses adalah 2.628.000 detik (sekitar 30 hari). Setelah kadaluarsa, token akses baru dapat dibuat menggunakan token penyegaran. Token penyegaran tidak memiliki masa berlaku.
Biasanya, proses seseorang yang baru mulai menggunakan aplikasi Anda untuk pertama kalinya terlihat sebagai berikut:
1. Pengguna dengan cTID tertentu mengakses aplikasi Anda di mana pun itu di-deploy; pengguna berinteraksi dengan tombol aksi atau yang setara.
2. Aplikasi menggunakan browser yang disematkan (atau cara lain yang sesuai) untuk mengarahkan pengguna ke URI tertentu di mana mereka akan memberikan izin yang diperlukan kepada aplikasi.
Dapatkan kepercayaan
Sebelum mengarahkan pengguna ke URI ini, pastikan bahwa pengguna mempercayai aplikasi Anda dan menyadari fakta bahwa mereka perlu memberikan izin tambahan.
3. Pengguna dialihkan ke URL pengalihan yang telah ditentukan. URL ini berisi token akses sebagai nilai dari parameter kueri code.
4. Pengguna dialihkan kembali ke aplikasi baik secara otomatis maupun atas kemauan mereka sendiri. Aplikasi diberitahu tentang nilai parameter code.
5. Aplikasi mengirim permintaan untuk menukar kode otorisasi dengan token akses ke endpoint tertentu.
6. Aplikasi menerima respons yang berisi token akses sebagai nilai dari kunci accessToken.
7. Aplikasi mengirim pesan ProtoOAApplicationAuthReq yang berisi bidang clientId dan clientSecret.
8. Aplikasi mengirim pesan ProtoOAGetAccountListByAccessTokenReq yang berisi bidang accessToken. Respons (ProtoOAGetAccountListByAccessTokenRes) berisi bidang ctidTraderAccountId yang berulang.
9. Setelah menerima respons, aplikasi mengirim pesan ProtoOAAccountAuthReq yang berisi bidang ctidTraderAccountId dan accessToken.
Setelah itu, pengguna harus diautentikasi di bawah akun yang ctidTraderAccountId-nya cocok dengan ctidTraderAccountId yang diberikan selama langkah 8.
Diagram di bawah ini menjelaskan bagaimana alur autentikasi dasar bekerja dari perspektif aplikasi Open API Anda.
graph TB
A([Mengarahkan pengguna <br/> ke URI tertentu]) ==> B([Menerima kode <br/> otorisasi]);
B ==> C([Mengirim permintaan untuk <br/> mendapatkan kode akses]);
C ==> D([Mengirim pesan <br/> ProOAApplicationAuthReq <br/>]);
D ==> E([Mengirim pesan <br/> ProtoOAAccountAuthReq <br/>]); Di sub-bagian di bawah ini, kami menjelaskan langkah-langkah kunci dari alur autentikasi secara detail.
Tambahkan URI pengalihan ¶
Seperti yang ditunjukkan sebelumnya, aplikasi Anda perlu mendapatkan kode otorisasi setelah pengguna dikirim ke URI pengalihan tertentu. URI ini akan menyertakan kode otorisasi sebagai nilai dari parameter kueri code.
Untuk menambahkan URI pengalihan baru, lakukan hal berikut:
1. Buka halaman Aplikasi di portal Open API.
2. Pilih tombol Edit di baris dengan aplikasi yang ingin Anda tambahkan URL pengalihan.
3. Di layar yang baru muncul, gulir ke bawah ke bagian URI Pengalihan.

4. Tambahkan URL pengalihan di bidang teks kosong yang tersedia. Jika tidak ada bidang yang tersedia, pilih tombol Tambahkan URI pengalihan.
5. Pilih tombol Simpan di bagian bawah halaman untuk menerapkan perubahan Anda.
Kelola URI pengalihan
URI pengalihan pertama adalah untuk layanan Playground yang memungkinkan Anda menguji aplikasi Anda sebelum memberikan akses kepada pengguna biasa. Ini tidak boleh digunakan untuk aplikasi produksi. Anda dapat menambahkan jumlah URI pengalihan yang tidak terbatas jika diperlukan.
Dapatkan kode otorisasi ¶
Untuk menerima kode otorisasi untuk cTID tertentu, aplikasi Anda perlu mengirim pengguna ke URI berikut.
https://id.ctrader.com/my/settings/openapi/grantingaccess/?client_id={clientId}&redirect_uri={your_redirectURI}&scope={scope}&product=web
Catatan
Pada tahap ini, pengguna perlu mengizinkan aplikasi atau layanan Anda untuk mengakses akun trading mereka. Oleh karena itu, sangat penting bagi Anda untuk memberikan pemahaman penuh kepada pengguna tentang apa yang diperlukan dalam menggunakan aplikasi atau layanan Anda terkait izin, penyimpanan data, dan pemrosesan data.
URI ini memiliki parameter kueri berikut.
| Parameter | Diperlukan? | Definisi |
|---|---|---|
client_id | Ya | Pengidentifikasi unik dari aplikasi Open API Anda. |
redirect_uri | Ya | URI pengalihan yang valid yang ditentukan dalam pengaturan aplikasi Anda. |
scope | Ya | Cakupan izin yang ingin Anda berikan kepada aplikasi Anda. Nilai berikut diterima:accounts. Hanya akses lihat yang diberikan. Aplikasi Anda akan dapat mengakses informasi dan statistik akun; melakukan operasi trading tidak mungkin.trading. Akses penuh diberikan ke informasi dan statistik akun serta semua operasi trading yang diizinkan. |
product | Tidak | Jika parameter ini ditentukan dan diatur ke web, layar otorisasi tidak memiliki header dan footer, yang membuatnya terlihat lebih baik di perangkat seluler. Meskipun parameter ini opsional, kami merekomendasikan untuk mengaturnya ke web. |
Untuk melihat client_id Anda, buka halaman Aplikasi dan pilih tombol Lihat di kolom Kredensial.
Setelah pengguna dikirim ke URI di atas (dan selama kedua parameter valid), mereka akan melihat layar login/pendaftaran yang meminta mereka untuk mengotorisasi di bawah cTID mereka. Setelah itu, pengguna akan ditampilkan dialog di mana mereka dapat mengizinkan aplikasi untuk mendapatkan akses ke satu atau lebih akun yang terhubung dengan cTID mereka.
Ketika pengguna memilih tombol Izinkan akses, mereka akan dialihkan ke redirect_uri yang Anda tentukan sebelumnya. Seperti yang ditunjukkan dalam contoh di bawah, kode otorisasi akan ditambahkan ke URI ini sebagai parameter kueri.
https://my-redirect-uri.com/?code=123ASDASffdg_as234_GCllkoq14adRB7_tvN
Pada titik ini, aplikasi Anda perlu mengakses dan menyimpan nilai parameter code. Ini harus segera ditukar dengan token akses sebelum kode otorisasi kedaluwarsa.
Akun tambahan
Jika pengguna membuat akun tambahan setelah menyelesaikan tindakan yang dijelaskan di atas, akun ini tidak akan diotorisasi di dalam aplikasi. Sebaliknya, pengguna perlu dialihkan kembali ke URL yang disediakan di atas sehingga mereka dapat memberikan akses aplikasi ke akun tambahan apa pun yang telah mereka buat sejak login terakhir.
Autentikasi melalui Google
Jika URI di atas dibuka melalui WebView dan pengguna memilih Google untuk masuk, Google akan menampilkan halaman Akses Diblokir, mencegah pengguna untuk melanjutkan lebih jauh.
Untuk mencegah hal ini, pastikan bahwa tanda tangan user-agent dari perangkat yang membuka halaman terlihat seperti berikut.
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
Dapatkan token akses ¶
Untuk mendapatkan token akses, lakukan panggilan REST API berikut.
URL Relatif
URL permintaan relatif terhadap https://openapi.ctrader.com.
| Metode | URL |
|---|---|
GET | apps/token |
Permintaan ini mencakup parameter kueri berikut.
| Parameter | Diperlukan? | Definisi |
|---|---|---|
grant_type | Ya | Jenis token yang dikirim ke endpoint ini. Nilai berikut diterima.authorization_code. Kode otorisasi dikirim ke endpoint untuk menukarnya dengan token akses.refresh_token. Token penyegaran dikirim ke endpoint untuk menyegarkan token akses yang ada. |
code | Tidak | Token yang dikirim ke endpoint. Parameter ini wajib jika grant_type=authorization_code. |
redirect_uri | Tidak | URI pengalihan yang valid yang ditentukan dalam pengaturan aplikasi Anda. Parameter ini wajib jika grant_type=authorization_code. |
client_id | Ya | Pengidentifikasi unik dari aplikasi Open API Anda. |
client_secret | Ya | Kunci rahasia yang ditetapkan untuk aplikasi Open API Anda. |
Contoh permintaan dapat ditemukan di bawah.
curl -X GET 'https://openapi.ctrader.com/apps/token?grant_type=authorization_code&code=0ssdgds98as9_QSF56FVC_22dfdf&redirect_uri=https://spotware.com&client_id=5430012&client_secret=012sds23dlkjQsd' -H 'Accept: application/json' -H 'Content-Type: application/json'
Untuk melihat client_secret Anda, kembali ke halaman Aplikasi dan pilih tombol Lihat di kolom Kredensial.
Setelah permintaan berhasil, Anda harus menerima respons dengan kunci berikut.
| Kunci | Jenis nilai | Definisi |
|---|---|---|
"accessToken" | string | Token akses yang akan digunakan aplikasi Anda untuk mengautentikasi pesan yang dikirim ke Open API cTrader. |
"tokenType" | string | Jenis token akses (bearer"" harus menjadi nilai kunci ini karena standar REST digunakan untuk membuat permintaan). |
"expiresIn" | integer | Jumlah detik yang harus berlalu sebelum token akses kedaluwarsa (secara default, nilai kunci ini sama dengan 2628000). |
"refreshToken" | string | Token pembaruan yang harus digunakan untuk memperbarui token akses setelah kedaluwarsa. Token pembaruan tidak memiliki waktu kedaluwarsa sendiri. |
"errorCode" | string/null | Kode kesalahan yang menjelaskan mengapa sebuah permintaan tidak berhasil. Untuk permintaan yang berhasil, nilai dari kunci ini seharusnya null. |
"description" | string/null | Deskripsi kesalahan yang terjadi selama permintaan yang tidak berhasil. Untuk permintaan yang berhasil, nilai dari kunci ini seharusnya null. |
Untuk contoh respons yang berhasil, lihat cuplikan di bawah.
{
"accessToken":"mos8Bw3D4EG0fRPd4Eqq0JxaFT4zjd8e4YijNezh_ag",
"tokenType":"bearer",
"expiresIn":2628000,
"refreshToken":"VCuafFhy81AFZjsWkbuEzdOhhRj5YTWz8fWUwHam7KM",
"errorCode":null,
"description":null,
}
Kirim pesan ProtoBuf yang diperlukan ¶
Setelah menerima kode akses yang valid, aplikasi Anda perlu mengirim pesan ProtoOAApplicationAuthReq, ProtoOAGetAccountListByAccessTokenReq dan ProtoOAAccountAuthReq. Ini dapat dilakukan sebagai berikut.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | |
Perbarui token akses ¶
Setelah token akses kedaluwarsa, Anda harus memperbaruinya menggunakan refreshToken yang Anda terima sebelumnya. Anda dapat melakukan tindakan ini melalui dua metode berbeda.
Kirim permintaan HTTP¶
Untuk mendapatkan token akses baru (dan, selanjutnya, token pembaruan baru), Anda dapat melakukan permintaan HTTP yang sama yang telah dibahas di atas. Seperti yang ditunjukkan dalam contoh di bawah, Anda harus mengatur parameter query grant_type ke refresh_token.
curl -X POST 'https://openapi.ctrader.com/apps/token?grant_type=refresh_token&refresh_token=asdXCVCVAS_218kjashf_asdasd2ASD_223x&client_id=5430012&client_secret=012sds23dlkjQsd' -H 'Accept: application/json' -H 'Content-Type: application/json'
Anda akan menerima respons yang berisi nilai baru dari kunci accessToken dan refreshToken. Anda dapat menggunakan nilai baru ini dengan aman sementara nilai lama dari kunci yang sama secara otomatis tidak valid.
Kirim pesan Protobuf¶
Sebagai alternatif, Anda dapat mengirim pesan ProtoOARefreshTokenReq dan menerima pesan ProtoOARefreshTokenRes yang berisi token baru yang valid.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 | |
Gunakan Playground ¶
Playground menyediakan cara cepat untuk mendapatkan token akses untuk cTID Anda sendiri, memungkinkan Anda untuk dengan cepat dan mudah mengembangkan dan menguji aplikasi Anda sebelum mendistribusikannya ke audiens target.
Untuk mengakses Playground, buka halaman Applications dan pilih tombol Playground. Di jendela yang baru muncul, pilih cakupan aplikasi dan klik tombol Get token.
Setelah itu, Anda akan melihat halaman berikut.

Anda dapat menggunakan token akses dan token pembaruan untuk mengirim pesan ke API saat diautentikasi di bawah cTID Anda sendiri.