[原文网址](https://connect.spotware.com/docs/open_api_2/getting_started_v2/open_authentication_v2)
Spotware Open API身份验证过程是基于OAuth 2.0设计的。 OAuth 2.0授权框架允许第三方应用程序通过编排资源所有者和服务之间的批准交互,或者通过允许第三方应用程序获取访问权来代表资源所有者获得对服务的有限访问权限 它代表自己。
与资源(例如交易账户)所有者的通信如下:
1.交易帐户所有者决定通过点击您网站上的某个操作按钮开始使用您的服务。
2.该服务生成对Open API 2.0的请求,将交易者重定向到Spotware端。
3.交易者使用他的个人cTrader个人资料登录并允许权限。
4.之后,交易者被重定向回服务端,其身份验证码可以与访问令牌交换。 访问令牌允许服务代表交易者使用交易账户执行操作。
#### Application Authorization
为了获得对交易账户信息和交易的访问权限,您应该为使用您的应用程序的每个cTrader ID拥有一个身份验证令牌。
如果要获取cTrader ID的身份验证令牌,则应按照中所述的说明进行操作[OAuth Services Description](https://connect.spotware.com/docs/api-reference/oauth-services-description)section of[API Reference](https://connect.spotware.com/docs/api-reference).
但是,为了在跳过身份验证流程的同时测试我们的Open API,您可以按照中所述的步骤进行操作[Playground](https://connect.spotware.com/docs/available-resources/playground)部分。 我们将在演示连接站点注册的测试应用程序“Test Partner”请求此身份验证令牌。
从“应用程序”部分选择您的应用程序,然后单击旁边的“操作”。 选择您需要的范围 - 交易或帐户 - 然后单击获取令牌。
**Note 1.*如果您不知道cTrader ID是什么,为什么需要它以及它如何工作,请检查[the corresponding section](https://connect.spotware.com/docs/available-resources/playground#ctraderID)下面。 因为您必须使用OAuth服务。
**Note 2.**如果您不了解OAuth技术,请查看OAuth标准参考[RFC6749: The OAuth 2.0 Authorization Framework](http://tools.ietf.org/html/rfc6749).
**Authorization Flow**
激活新添加的应用程序后,您可以继续获取访问令牌并授权帐户。
单击所需应用程序旁边的Playground。 在这里,您可以找到您的访问权限并刷新令牌并授权帐户。 选择权限范围,然后单击“获取令牌”。
请注意,OAuth 2.0请求有两种权限范围:
*账户 - 要求访问账户信息(交易历史,头寸,挂单等)
*交易 - 要求代表账户所有者执行交易操作的权限(发送市场和挂单,接收交易事件等)
![](https://connect.spotware.com/uploads/api2/0ee9810dae204ab75f54929df4d589e8.png)
隐藏或显示客户端cTrader ID并通过电子邮件发送给应用程序,选择要为其启用身份验证的帐户,然后单击“允许访问”。
![](https://connect.spotware.com/uploads/api2/f2ff3d219659c78224965efc28410dc5.png)
API使用[cTrader ID](https://help.spotware.com/ctid)作为交易者的个人资料标识符登录cTrader平台环境。有关更多详细信息,请查看官方OAuth 2.0授权框架参考:[RFC6749 OAuth 2.0授权框架](https://tools.ietf.org/html/rfc6749)
#### Using OAuth examples
**Note.**如果您打算使用OAuth库来使用授权服务器,请记住该库应该与OAuth v2 draft 20兼容。
提供两种服务:
* Auth(例如https://sandbox-connect.spotware.com/apps/auth) - 可用于授权资源(交易账户)所有者。
*令牌(例如https://sandbox-connect.spotware.com/apps/token) - 可用于刷新或获取令牌。
#### Obtaining and refreshing access token workflow:
Getting Authorization code URI:
~~~
https://sandbox-connect.spotware.com/apps/auth?
client_id={your Partner's Id here}&
redirect_uri={redirect_uri}&
scope=accounts
~~~
*Example:*
~~~
https://sandbox-connect.spotware.com/apps/auth?client_id=7_5az7pj935owsss8kgokcco84wc8osk0g0gksow0ow4s4ocwwgc&redirect_uri=http%3A%2F%2Fwww.spotware.com%2F&scope=accounts
~~~
Exchanging Authorization code with access\_token and refresh\_token:
~~~
https://sandbox-connect.spotware.com/apps/token?
grant_type=authorization_code&
code={authorization_code}&
redirect_uri={redirect_uri}&
client_id={your Partner's Id here}&
client_secret={your Partner's Secret here}
~~~
**Note.***{authorization\_code}*应该使用实际的授权代码替换占位符以获取授权代码响应。
*Example:*
~~~
https://sandbox-connect.spotware.com/apps/token?grant_type=authorization_code&code={authorization_code}&redirect_uri=http%3A%2F%2Fwww.spotware.com%2F&client_id=7_5az7pj935owsss8kgokcco84wc8osk0g0gksow0ow4s4ocwwgc&client_secret=49p1ynqfy7c4sw84gwoogwwsk8cocg8ow8gc8o80c0ws448cs4
~~~
**Note.**请记住,访问令牌有到期时间。 当您收到有关访问令牌过期的错误消息时,您应该生成消息以使用刷新令牌请求刷新最后一个消息。 请参阅下面的详细信息。
Refreshing token URI:
~~~
https://sandbox-connect.spotware.com/apps/token?
grant_type=refresh_token&
refresh_token={refresh_token}&
client_id={your Partner's Id here}&
client_secret={your Partner's Secret here}
~~~
**Note.***{refresh\_token}*占位符应替换为实际刷新令牌。
*Example:*
~~~
https://sandbox-connect.spotware.com/apps/token?grant_type=refresh_token&refresh_token={refresh_token}&client_id=7_5az7pj935owsss8kgokcco84wc8osk0g0gksow0ow4s4ocwwgc&client_secret=49p1ynqfy7c4sw84gwoogwwsk8cocg8ow8gc8o80c0ws448cs4
~~~
**Note.**在开始使用OAuth服务之前,请阅读本指南的以下部分:[OAuth Services Description](https://connect.spotware.com/docs/api-reference/oauth-services-description)for more details.
Get access to accounts via OAuth
当交易者决定允许第三方应用程序访问其交易账户时,他们应该被带到Open API OAuth授权服务器。 交易员将进入他的[cTrader ID](http://help.spotware.com/ctid)要登录的凭据,然后将询问他想要授予哪种资源。 获取权限后,OAuth后端会生成与允许的资源相关的访问令牌。 然后将访问令牌发送回第三方的后端。
在第三方的应用程序获得访问令牌后,它可以使用交易者的所有授权资源,而无需任何其他请求。
- 空白目录
- API Reference 2.0
- Getting Started
- Open Authentication
- Protocol Buffers
- Protobuf Messages Reference
- Open API Messages
- Open API Model Messages
- Open API Error Codes
- Example Projects .NET
- Spotware Proxy Cloud
- Getting Started in C#
- Test Environment
- Playground
- Frequently Asked Questions
- Lesson 1. Your First App
- Lesson 2. Get Trading Data
- Lesson 3. Get Market Data
- Lesson 4. Using Trading API