您似乎正在使用IG Labs REST Trading API;文档说明有两种身份验证模式,具体取决于您指定的API版本。您引用的标题文档是所涉及的不同标题的概述。这一节对于实际理解身份验证/授权如何为该API工作并不十分有用。

在同一页上有一个认证和授权部分,你需要学习的是这个部分。这里描述了两种身份验证模式。还有一个separate examples section解释了这两种不同模式如何处理所示的具体请求和响应。

要进行身份验证,必须首先向POST请求发送一个^{} route,API密钥位于X-IG-API-KEY头中。这是你需要用户名和密码的地方。然后,有效的用户名/密码将为您提供安全令牌以用于后续请求。对于API版本1和2,可以包含一个额外的字段encryptedPassword,以说明密码是纯文本还是加密的;您只需要满足IG Singapore login restrictions的要求,就可以安全地省略该字段。

对于v1和v2请求,您可以在响应头中获得这些令牌,而API v3版本则在正文中提供所需的信息。代币的使用寿命有限。v1/v2令牌的有效期为6小时,但在您需要再次登录之前,通过使用这些令牌发出请求,会自动延长72小时。v3令牌的有效期仅为60秒,但单独的refresh_token允许您通过将刷新令牌发送到^{} endpoint来获取新令牌。

V1/v2请求然后在/session响应使用的完全相同的头中使用令牌,因此跨CST(“客户端会话令牌”)和X-SECURITY-TOKEN头复制,就可以了。

V3请求使用标准的OAuthAuthorization头,方法设置为Bearer。只需使用oauthToken结构中的access_token值构造该头,并在access_token过期时保存refresh_token。文档还建议您设置IG-ACCOUNT-ID头来标识帐户(令牌仅标识客户端)。

我强烈建议您使用^{} object来简化头处理。

对于API的v1和v2版本,请使用:import requests

url = 'https://website.com'

API_KEY = '.... your API key ....'

username = 'username'

password = 'password'

session = requests.Session()

# these are sent along for all requests

session.headers['X-IG-API-KEY'] = API_KEY

# not strictly needed, but the documentation recommends it.

session.headers['Accept'] = "application/json; charset=UTF-8"

# log in first, to get the tokens

response = session.post(

url + '/session',

json={'identifier': username, 'password': password},

headers={'VERSION': '2'},

)

response.raise_for_status() # if not a 2xx response, raise an exception

# copy across the v1/v2 tokens

session.headers['CST'] = response.headers['CST']

session.headers['X-SECURITY-TOKEN'] = response.headers['X-SECURITY-TOKEN']

现在您可以使用session继续访问API。

对于v3,标记位于JSON主体中:session = requests.Session()

# these are sent along for all requests

session.headers['X-IG-API-KEY'] = API_KEY

# log in first, to get the tokens

response = session.post(

url + '/session',

json={'identifier': username, 'password': password},

headers={'VERSION': '3'},

)

response.raise_for_status() # if not a 2xx response, raise an exception

response_data = response.json()

oauth_tokens = response_data['oauthToken']

session.headers['Authorization'] = 'Bearer ' + oauth_tokens['access_token']

session.headers['IG-ACCOUNT-ID'] = response_data['accountId']

现在设置为使用session继续访问API,直到oauth._tokens['expires_in']秒过去或给出401响应:if response.status == 401 and response.json()['errorCode'] == 'error.security.oauth-token-invalid':

# refresh required, old token is done.

然后需要使用session.post(url + '/session/refresh-token', json={'refresh_token': oauth_tokens['refresh_token']}) to get a freshoauthToken`结构:# refresh the access token

del session.headers['Authorization']

response = session.post(

url + '/session/refresh-token',

json={'refresh_token': oauth_tokens['refresh_token']},

headers={'VERSION': '1'},

)

response.raise_for_status() # if not a 2xx response, raise an exception

oauth_tokens = response.json()

session.headers['Authorization'] = 'Bearer ' + oauth_tokens['access_token']

注意,我一直在每个单独的请求中发送VERSION头;它们的API使用每个端点的版本号,因此/session有3个版本,但是/session/refresh-token只有版本1,您不能将VERSION设置为任何其他版本,否则它将中断。

V3 /session格式可能看起来更麻烦,但是该版本允许您无限期地刷新访问,只要您在上次使用令牌后10分钟内刷新;V1/V2访问令牌在最多72小时后过期,无论您做什么。

python调用api做用户登录认证_Python使用用户名、密码和API密钥连接到API相关推荐

  1. python调用api做用户登录认证_(二)Python调用Zabbix api之从入门到放弃——登录并获取身份验证令牌...

    x.x.x.x可能是你的IP或者域名 访问流程概览: 1.首先登录 2.认证成功后zabbix server返回一个token 3.带着这个token去访问各种数据,做各种操作 4.完毕! 一.用RE ...

  2. java用户的登录图片_Java 如何用 token 做用户登录认证

    1.什么是 token??? Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌. 2.token 做用户登录认证 ● 流程 3. Java 实现 ● 用户登录生成 token,保存到 ...

  3. java+登录window域认证网页_Java 如何用 token 做用户登录认证

    1.什么是 token??? Token 是服务端生成的一串字符串,以作客户端进行请求的一个令牌. 2.token 做用户登录认证 ● 流程 3. Java 实现 ● 用户登录生成 token,保存到 ...

  4. java通过ldap添加用户后_ldap连接不上改用户_JAVA通过LDAP做用户登录认证,怎么做业务的异常处理?...

    通过java.namming包实现LDAP用户登录认证,怎么区分账号被冻结.停用.不存在等异常的业务情况呢? 参考的是:网上普遍流传的LDAP连接的代码 public boolean auth(Str ...

  5. python用户登录代码_Python基础练习之用户登录实现代码分享

    python版本为python3.5 1.要求 1)输入用户名密码 2)认证成功后显示欢迎信息 3)输错三次后锁定 2.需求分析 1)用户信息存储在文件中(login/config/user_logi ...

  6. 基于jwt的用户登录认证

    最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...

  7. SpringBoot 快速集成 JWT 实现用户登录认证

    前言:当今前后端分离时代,基于Token的会话保持机制比传统的Session/Cookie机制更加方便,下面我会介绍SpringBoot快速集成JWT库java-jwt以完成用户登录认证. 一.JWT ...

  8. 用python写注册登录界面web_用Python实现web端用户登录和注册功能

    这篇文章主要介绍了用Python实现web端用户登录和注册功能的教程,需要的朋友可以参考下 用户管理是绝大部分Web网站都需要解决的问题.用户管理涉及到用户注册和登录. 用户注册相对简单,我们可以先通 ...

  9. python123注册登录_用Python实现web端用户登录和注册功能的教程

    用户管理是绝大部分Web网站都需要解决的问题.用户管理涉及到用户注册和登录. 用户注册相对简单,我们可以先通过API把用户注册这个功能实现了: _RE_MD5 = re.compile(r'^[0-9 ...

最新文章

  1. python pyOpenGL安装
  2. UGUI 锚点设置为四方扩充模式然后设置局部坐标为0将出现什么问题
  3. ES6学习笔记(二十二)ArrayBuffer
  4. php如何检测键盘按键,js键盘事件,判断按下的是哪个键
  5. 卷积神经网络原理_人脸识别背后,卷积神经网络的数学原理原来是这样的
  6. USF MSDS501 计算数据科学中文讲义·翻译完成
  7. python 数据分析领域常用的包
  8. threeJs 入门
  9. 错误解决办法:‘NULL’ was not declared in this scope
  10. ImportError: cannot import name 'PILLOW_VERSION'
  11. 一箭N雕:多任务深度学习实战
  12. 金融衍生物英语名词的对应中文解析
  13. 计算机英语念法,电脑的英文读音标准带音标的
  14. sitemap生成器-网站sitemap生成器-免费sitemap自动生成
  15. 压缩包乱码解压密码错误||qq游戏游戏加载中,请稍后
  16. vant d的地址组件中文操作手册
  17. iphone自带计算机删除,如何清理iPhone上的垃圾文件
  18. 嵌入式开发经验分享,把学习当作一种兴趣
  19. matlab振荡环节的频率特性,自动控制原理_典型环节的频率特性教材教学课件.ppt...
  20. 34.SAP中动态安全库存的计算

热门文章

  1. KMP算法(求解字符串匹配)
  2. SOBS(背景建模)
  3. 瑜伽和健康软件行业调研报告 - 市场现状分析与发展前景预测
  4. 删除任务栏 creative cloud files
  5. mysql连接池泄露_一次线上故障:数据库连接池泄露后的思考
  6. 2021年全球热处理炉收入大约11560百万美元,预计2028年达到12850百万美元
  7. 如何去除IDEA代码中大量的波浪线!
  8. 如何提高苹果商店ASA广告的展示份额
  9. 【ESP32最全学习笔记(基础篇)——4.ESP32 引脚介绍】
  10. BCS2022冬奥网络安全“零事故”宣传周压轴:解密守护“零事故”的“中国产品”...