Rest 从嵌入式设备访问bigquery API
我打算通过RESTAPI将数据从嵌入式设备加载到BigQueryRest 从嵌入式设备访问bigquery API,rest,google-cloud-platform,google-bigquery,Rest,Google Cloud Platform,Google Bigquery,我打算通过RESTAPI将数据从嵌入式设备加载到BigQuery 我的BigQuery初始化已经完成,我正在使用python库访问它 我的嵌入式设备使用我的服务帐户JSON散列的这些参数创建JWT 我的HTTP请求 我尝试使用TCP终端应用程序测试相同的功能 如果配方有什么问题,请向我解释 我首先需要知道BigQuery是否允许这样的访问 请告诉我JSON字符串中的sub应该是什么 如果我做错了,请告诉我正确的程序 我参考了这篇文章,但在我的场景中不能这样做: [已编辑] 查看此链接以配置嵌入式
curl-H“授权:承载”https://bigquery.googleapis.
com/bigquery/v2/projects//dataset/
Sir,我正在使用python库来测试环境,它似乎可以工作。现在我需要对嵌入式设备做同样的事情。STM32微控制器和GSM模块。所以我需要用剩下的API@Noby-我已将响应编辑为仅使用REST API。@Noby-请告诉我它是否适用于您。如果是这样,那就接受这个答案。@Noby-我自己也试过,我可以确认它是有效的。值得一提的几个细节:1)服务帐户JSON文件包含“private\u key”值,如:“----开始私钥------\n……”确保在“private\u key\u FROM\u JSON”中包含完整字符串。2) Python脚本将以:b'eyJ0eXAiOiJ……..的格式返回JWT,但请确保只提供令牌eyJ0eXAiOiJ。。。。。。。。(不带b和“”)在Authorization:Bearer中,否则将无法正确识别,并将失败并出现401错误。试试看,请考虑接受肥皂水的回答。SuDS先生,非常感谢你。当我在API构建器站点上尝试时,它对我起了作用。现在正在试验我的设备的SSL堆栈。
{
"iss": "*account*@*project*.iam.gserviceaccount.com",
"iat": "*thistime*",
"exp": "*time +20mins*",
"aud": "https://bigquery.googleapis.com",
"sub": "*account*@*project*.iam.gserviceaccount.com"
}
curl -X GET -H 'Authorization: Bearer *my JWT*' -H 'content-type: application/json' -v -i 'https://bigquery.googleapis.com/bigquery/v2/projects/*project*/datasets/*dataset*?key=*API Key*'
import time, jwt
iat = time.time()
exp = iat + 3600
PRIVATE_KEY_ID_FROM_JSON = "<private_key_id from json key file>"
PRIVATE_KEY_FROM_JSON = "<private_key from json file>"
payload = {'iss': '<client_email field from json key file>',
'sub': '<client_email field from json key file>',
'aud': 'https://bigquery.googleapis.com/',
'iat': iat,
'exp': exp}
additional_headers = {'kid': PRIVATE_KEY_ID_FROM_JSON}
signed_jwt = jwt.encode(payload, PRIVATE_KEY_FROM_JSON, headers=additional_headers,algorithm='RS256')
print(signed_jwt)
curl -H "Authorization: Bearer <generated JWT>" https://bigquery.googleapis.
com/bigquery/v2/projects/<GCP project name>/datasets/<test dataset name>