Uygulama ve hesap kimlik doğrulaması¶
cTrader Open API kimlik doğrulama süreci OAuth 2.0 standardına dayanmaktadır.
Bu çerçeve, üçüncü taraf uygulamaların bir hizmete sınırlı erişim elde etmesini sağlar; bu erişim, kaynak sahibinin adına, kaynak sahibi ile hizmet arasında bir onay etkileşimi düzenleyerek veya üçüncü taraf uygulamanın kendi adına erişim elde etmesine izin vererek gerçekleşebilir.
Kimlik doğrulama akışı ¶
OAuth 2.0 standardına göre, hesap kimlik doğrulaması hem bir yetkilendirme kodu hem de bir erişim belirteci gerektirir.
Belirteçleri tanımlama
Bir yetkilendirme kodu, bireysel bir cTID için verilen kısa süreli bir belirteçtir. Son kullanma süresi bir dakikadır. Bir erişim belirteci, bir uygulamanın cTrader arka ucuna mesaj gönderip almasını sağlayan uzun süreli bir belirteçtir. Alındıktan sonra, bir yetkilendirme kodu hızla bir erişim belirteci ile değiştirilmelidir; daha sonra, uygulamanızı doğrulamak için cTrader arka ucuna gönderilen tüm mesajlar alınan erişim belirteci ile imzalanmalıdır. Bir erişim belirtecinin son kullanma süresi 2.628.000 saniyedir (yaklaşık 30 gün). Süresi dolduktan sonra, bir yenileme belirteci kullanılarak yeni bir erişim belirteci oluşturulabilir. Yenileme belirtecinin son kullanma süresi yoktur.
Tipik olarak, uygulamanızı ilk kez kullanmaya başlayan yeni birinin süreci aşağıdaki gibidir:
1. Belirli bir cTID'ye sahip bir kullanıcı, uygulamanızın dağıtıldığı her yerden erişir; kullanıcı bir eylem düğmesi veya eşdeğeri ile etkileşime girer.
2. Uygulama, kullanıcıyı gerekli izinleri vereceği belirli bir URI'ye yönlendirmek için yerleşik bir tarayıcı (veya başka uygun bir yöntem) kullanır.
Güven kazanma
Kullanıcıyı bu URI'ye yönlendirmeden önce, kullanıcının uygulamanıza güvendiğinden ve ek izinler sağlaması gerekeceğinin farkında olduğundan emin olun.
3. Kullanıcı önceden tanımlanmış bir yönlendirme URL'sine aktarılır. Bu URL, code sorgu parametresinin değeri olarak erişim belirtecini içerir.
4. Kullanıcı, kendi isteğiyle veya otomatik olarak uygulamaya geri aktarılır. Uygulama, code parametresinin değeri hakkında bilgilendirilir.
5. Uygulama, yetkilendirme kodunu bir erişim belirteci ile değiştirmek için belirli bir uç noktaya bir istek gönderir.
6. Uygulama, accessToken anahtarının değeri olarak erişim belirtecini içeren bir yanıt alır.
7. Uygulama, clientId ve clientSecret alanlarını içeren ProtoOAApplicationAuthReq mesajını gönderir.
8. Uygulama, accessToken alanını içeren ProtoOAGetAccountListByAccessTokenReq mesajını gönderir. Yanıt (ProtoOAGetAccountListByAccessTokenRes), tekrarlanan ctidTraderAccountId alanını içerir.
9. Bir yanıt aldıktan sonra, uygulama ctidTraderAccountId ve accessToken alanlarını içeren ProtoOAAccountAuthReq mesajını gönderir.
Daha sonra, kullanıcı, ctidTraderAccountId'si 8. adımda sağlanan ctidTraderAccountId ile eşleşen hesap altında kimlik doğrulaması yapmalıdır.
Aşağıdaki diyagram, temel kimlik doğrulama akışının Open API uygulamanızın bakış açısından nasıl çalıştığını açıklamaktadır.
graph TB
A([Kullanıcıyı belirli bir <br/> URI'ye yönlendirin]) ==> B([Yetkilendirme kodunu <br/> alın]);
B ==> C([Erişim kodu <br/> almak için <br/> istek gönderin]);
C ==> D([ProOAApplicationAuthReq <br/> mesajını <br/> gönderin]);
D ==> E([ProtoOAAccountAuthReq <br/> mesajını <br/> gönderin]); Aşağıdaki alt bölümlerde, kimlik doğrulama akışının temel adımlarını ayrıntılı olarak açıklıyoruz.
Bir yönlendirme URI'si ekleme ¶
Daha önce gösterildiği gibi, uygulamanızın bir kullanıcı belirli bir yönlendirme URI'sine gönderildikten sonra bir yetkilendirme kodu alması gerekir. Bu URI, code sorgu parametresinin değeri olarak yetkilendirme kodunu içerecektir.
Yeni bir yönlendirme URI'si eklemek için aşağıdakileri yapın:
1. Open API portalında Uygulamalar sayfasını açın.
2. Yönlendirme URL'si eklemek istediğiniz uygulamanın bulunduğu satırdaki Düzenle düğmesini seçin.
3. Yeni açılan ekranda, Yönlendirme URI'leri bölümüne ilerleyin.

4. Mevcut boş bir metin giriş alanına bir yönlendirme URL'si ekleyin. Mevcut alanlar gösterilmiyorsa, Yönlendirme URI'si Ekle düğmesini seçin.
5. Değişikliklerinizi uygulamak için sayfanın altındaki Kaydet düğmesini seçin.
Yönlendirme URI'lerini yönetme
İlk yönlendirme URI'si, uygulamanızı normal kullanıcılara erişim vermeden önce test etmenizi sağlayan Playground hizmeti içindir. Bir üretim uygulaması için asla kullanılmamalıdır. Gerekirse sınırsız sayıda yönlendirme URI'si ekleyebilirsiniz.
Yetkilendirme kodunu elde edin ¶
Belirli bir cTID için yetkilendirme kodu almak üzere uygulamanızın bir kullanıcıyı aşağıdaki URI'ye göndermesi gerekecektir.
https://id.ctrader.com/my/settings/openapi/grantingaccess/?client_id={clientId}&redirect_uri={your_redirectURI}&scope={scope}&product=web
Not
Bu aşamada, kullanıcının uygulamanıza veya hizmetinize işlem hesaplarına erişmesi için izin vermesi gerekecektir. Sonuç olarak, kullanıcının uygulamanızı veya hizmetinizi kullanmanın izinler, veri depolama ve veri işleme ile ilgili olarak ne gerektireceği konusunda tam bir anlayışa sahip olmasını sağlamanız zorunludur.
Bu URI aşağıdaki sorgu parametrelerine sahiptir.
| Parametre | Gerekli mi? | Tanım |
|---|---|---|
client_id | Evet | Open API uygulamanızın benzersiz tanımlayıcısı. |
redirect_uri | Evet | Uygulamanızın ayarlarında belirtilen geçerli bir yönlendirme URI'si. |
scope | Evet | Uygulamanıza verilmesini istediğiniz izinlerin kapsamı. Aşağıdaki değerler kabul edilir:accounts. Yalnızca görüntüleme erişimi verilir. Uygulamanız hesap bilgilerine ve istatistiklerine erişebilecektir; işlem operasyonları gerçekleştirmek imkansız olacaktır.trading. Hesap bilgilerine ve istatistiklerine ve tüm izin verilen işlem operasyonlarına tam erişim verilir. |
product | Hayır | Bu parametre belirtilir ve web olarak ayarlanırsa, yetkilendirme ekranında başlık ve altbilgi bulunmaz, bu da mobil cihazlarda daha iyi görünmesini sağlar. Parametre isteğe bağlı olsa da, onu web olarak ayarlamanızı öneririz. |
client_id'nizi görüntülemek için Uygulamalar sayfasına gidin ve Kimlik Bilgileri sütunundaki Görüntüle düğmesini seçin.
Bir kullanıcı yukarıdaki URI'ye gönderildikten sonra (ve her iki parametre de geçerli olduğu sürece), onları cTID'leri altında yetkilendirmeye yönlendiren bir giriş/kayıt ekranı görmelidirler. Bunun ardından, bir kullanıcıya, cTID'lerine bağlı bir veya daha fazla hesaba erişim sağlaması için uygulamaya izin verebilecekleri bir iletişim kutusu gösterilecektir.
Kullanıcı Erişime izin ver düğmesini seçtiğinde, başlangıçta belirttiğiniz redirect_uri'ye yönlendirileceklerdir. Aşağıdaki örnekte gösterildiği gibi, yetkilendirme kodu bu URI'ye bir sorgu parametresi olarak eklenecektir.
https://my-redirect-uri.com/?code=123ASDASffdg_as234_GCllkoq14adRB7_tvN
Bu noktada, uygulamanızın code parametresinin değerine erişmesi ve onu depolaması gerekecektir. Yetkilendirme kodu süresi dolmadan önce hızlı bir şekilde bir erişim belirteciyle değiştirilmelidir.
Ek hesaplar
Bir kullanıcı yukarıda açıklanan eylemleri tamamladıktan sonra ek hesaplar oluşturursa, bu hesaplar uygulama içinde yetkilendirilmeyecektir. Bunun yerine, kullanıcının yukarıda belirtilen URL'ye geri yönlendirilmesi gerekecektir, böylece son girişten bu yana oluşturdukları herhangi bir ek hesaba uygulamaya erişim verebilirler.
Google aracılığıyla kimlik doğrulama
Yukarıdaki URI WebView aracılığıyla açılır ve kullanıcı Google ile oturum açmayı seçerse, Google bir Erişim engellendi sayfası gösterecek ve kullanıcının daha fazla ilerlemesini engelleyecektir.
Bunu önlemek için, sayfayı açan cihazın user-agent imzasının şöyle göründüğünden emin olun.
'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'
Erişim belirtecini elde edin ¶
Bir erişim belirteci almak için aşağıdaki REST API çağrısını gerçekleştirin.
Göreceli URL
İstek URL'si https://openapi.ctrader.com adresine görecelidir.
| Yöntem | URL |
|---|---|
GET | apps/token |
Bu istek aşağıdaki sorgu parametrelerini içerir.
| Parametre | Gerekli mi? | Tanım |
|---|---|---|
grant_type | Evet | Bu uç noktaya gönderilen belirtecin türü. Aşağıdaki değerler kabul edilir:authorization_code. Bir yetkilendirme kodu, onu bir erişim belirteciyle değiştirmek için uç noktaya gönderilir.refresh_token. Mevcut bir erişim belirtecini yenilemek için uç noktaya bir yenileme belirteci gönderilir. |
code | Hayır | Uç noktaya gönderilen belirteç. Bu parametre, grant_type=authorization_code ise zorunludur. |
redirect_uri | Hayır | Uygulamanızın ayarlarında belirtilen geçerli bir yönlendirme URI'si. Bu parametre, grant_type=authorization_code ise zorunludur. |
client_id | Evet | Open API uygulamanızın benzersiz tanımlayıcısı. |
client_secret | Evet | Open API uygulamanıza atanan gizli anahtar. |
İstek örneği aşağıda bulunabilir.
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'
client_secret'nizi görüntülemek için Uygulamalar sayfasına geri dönün ve Kimlik Bilgileri sütunundaki Görüntüle düğmesini seçin.
Başarılı bir istek üzerine, aşağıdaki anahtarları içeren bir yanıt almalısınız.
| Anahtar | Değer türü | Tanım |
|---|---|---|
"accessToken" | dize | Uygulamanızın cTrader Open API'ye gönderilen mesajları doğrulamak için kullanacağı erişim belirteci. |
"tokenType" | dize | Erişim belirtecinin türü (REST standardı istek yapmak için kullanıldığından, bu anahtarın değeri "bearer" olmalıdır). |
"expiresIn" | tam sayı | Erişim belirtecinin süresi dolmadan önce geçmesi gereken saniye sayısı (varsayılan olarak, bu anahtarın değeri 2628000'e eşittir). |
"refreshToken" | dize | Erişim belirtecinin süresi dolduğunda yenilemek için kullanılması gereken yenileme belirteci. Yenileme belirtecinin kendisinin bir son kullanma süresi yoktur. |
"errorCode" | dize/null | Bir isteğin neden başarısız olduğunu açıklayan hata kodu. Başarılı bir istek için bu anahtarın değeri null olmalıdır. |
"description" | dize/null | Başarısız bir istek sırasında meydana gelen bir hatanın açıklaması. Başarılı bir istek için bu anahtarın değeri null olmalıdır. |
Başarılı bir yanıt örneği için aşağıdaki kod parçacığına bakın.
{
"accessToken":"mos8Bw3D4EG0fRPd4Eqq0JxaFT4zjd8e4YijNezh_ag",
"tokenType":"bearer",
"expiresIn":2628000,
"refreshToken":"VCuafFhy81AFZjsWkbuEzdOhhRj5YTWz8fWUwHam7KM",
"errorCode":null,
"description":null,
}
Gerekli ProtoBuf mesajlarını gönderin ¶
Geçerli bir erişim kodu aldıktan sonra, uygulamanızın ProtoOAApplicationAuthReq, ProtoOAGetAccountListByAccessTokenReq ve ProtoOAAccountAuthReq mesajlarını göndermesi gerekecektir. Bu işlem aşağıdaki gibi yapılabilir.
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 | |
Erişim belirtecini yenileyin ¶
Bir erişim belirtecinin süresi dolduktan sonra, daha önce aldığınız refreshToken'ı kullanarak onu yenilemeniz gerekecektir. Bu eylemi iki farklı yöntemle gerçekleştirebilirsiniz.
Bir HTTP isteği gönderin¶
Yeni bir erişim belirteci (ve ardından yeni bir yenileme belirteci) elde etmek için yukarıda ele alınan aynı HTTP isteğini gerçekleştirebilirsiniz. Aşağıdaki örnekte gösterildiği gibi, grant_type sorgu parametresini refresh_token olarak ayarlamanız gerekir.
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'
accessToken ve refreshToken anahtarlarının yeni değerlerini içeren bir yanıt alacaksınız. Bu yeni değerleri güvenle kullanabilirsiniz; aynı anahtarların eski değerleri otomatik olarak geçersiz kılınır.
Bir Protobuf mesajı gönderin¶
Alternatif olarak, ProtoOARefreshTokenReq mesajını gönderebilir ve yeni geçerli belirteçleri içeren ProtoOARefreshTokenRes mesajını alabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 | |
Playground'u kullanın ¶
Playground, kendi cTID'niz için bir erişim belirteci elde etmenin hızlı bir yolunu sunar, uygulamanızı hedef kitlenize dağıtmadan önce hızlı ve kolay bir şekilde geliştirmenize ve test etmenize olanak tanır.
Playground'a erişmek için Uygulamalar sayfasına gidin ve Playground düğmesini seçin. Yeni açılan pencerede, uygulamanın kapsamını seçin ve Belirteç al düğmesine tıklayın.
Ardından, aşağıdaki sayfayı görmelisiniz.

Kendi cTID'niz altında kimliği doğrulanmışken API'ye mesaj göndermek için erişim belirtecini ve yenileme belirtecini kullanabilirsiniz.