不使用huaweicloud-sdk包获取IAM的token的方法_python语言实现
【摘要】 遇到在某些场景下只想简单的获取IAM token,然后调用一个API接口。导入huaweicloud-sdk-python包非常的重,写代码多,不想用这种方式。通过python自带的urllibe2或第三方包requests可以用几行代码获取IAM token。
遇到在某些场景下只想简单的获取华为云IAM token,然后调用一个API接口。导入huaweicloud-sdk-python包非常的重,写代码多。如果不想导入过多的包。可以通过python自带的urllibe2包或第三方包requests包,用几行代码就能获取IAM token。
如果要写一个应用需要调用多个华为云服务的API,建议导入huaweicloud-sdk-python包,参考SDK文档编写。Python SDK入门。
# _*_coding: utf-8_*_
import json
import requests
import urllib2
#1 Get keystone version by urllib2(GET)
version_url = "https://iam.myhuaweicloud.com/v3"
req = urllib2.Request(version_url)
response = urllib2.urlopen(req)
print("Get keystone version info:", response.read())
# IAM body
data={
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"domain": {
"name": "***"
},
"name": "***",
"password": "###"
}
}
},
"scope": {
"domain": {
"name": "***"
}
}
}
}
auth_url = "https://iam.myhuaweicloud.com/v3/auth/tokens?nocatalog=true"
headers = """ "Content-Type": "application/json" """
json_data = json.dumps(data)
#2 Get token by urllib2.Request(POST) (pyhthon native)
auth_req = urllib2.Request(auth_url, json_data)
auth_req.add_header('Content-Type', 'application/json')
auth_resp = urllib2.urlopen(auth_req)
if 'x-subject-token' in auth_resp.headers:
print("Get token by urllib2.Request:", auth_resp.headers['x-subject-token'])
#3 Get token by requests.post(POST) (pip install requests)
auth_resp = requests.post(auth_url, json_data, headers, verify=False)
if 'x-subject-token' in auth_resp.headers:
print("Get token by requests.post:", auth_resp.headers['x-subject-token'])
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)