从shell脚本中的curl请求中提取访问令牌
使用邮递员作为基础,我在这里有一个curl 请求,我正在尝试返回访问令牌。
AUTHORIZATION=$(curl --location --request POST 'https://some.url/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "grant_type=$GRANT_TYPE" \
--data-urlencode "client_id=$CLIENT_ID" \
--data-urlencode "client_secret=$CLIENT_SECRET"\)
当我 echo
时,我得到如下输出:
{"access_token":"16WkRKbVpHWXlZekJsWVd...","token_type":"Bearer","expires_in":14400}
我想提取 access_token
并在脚本的其他部分中使用。我已尝试添加 jq .access_token -r
,如下所示,但我只是返回一个 null
变量。
AUTHORIZATION=$(curl --location --request POST 'https://some.url/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "grant_type=$GRANT_TYPE" \
--data-urlencode "client_id=$CLIENT_ID" \
--data-urlencode "client_secret=$CLIENT_SECRET"\
-s \
| jq .access_token -r)
解决方案如下:通过 shell 脚本从curl结果中提取令牌建议保存到文件并对其进行 grep 操作。如果可以避免的话,我真的不想将令牌保存到文件中。
Using a postman as a base, I have a curl request here and I'm trying to return the access token.
AUTHORIZATION=$(curl --location --request POST 'https://some.url/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "grant_type=$GRANT_TYPE" \
--data-urlencode "client_id=$CLIENT_ID" \
--data-urlencode "client_secret=$CLIENT_SECRET"\)
When I echo
I get an output like:
{"access_token":"16WkRKbVpHWXlZekJsWVd...","token_type":"Bearer","expires_in":14400}
I want to extract the access_token
and use in other parts of my script. I've tried the adding jq .access_token -r
as seen below, but I'm just returning a null
variable.
AUTHORIZATION=$(curl --location --request POST 'https://some.url/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode "grant_type=$GRANT_TYPE" \
--data-urlencode "client_id=$CLIENT_ID" \
--data-urlencode "client_secret=$CLIENT_SECRET"\
-s \
| jq .access_token -r)
Solutions here: extract token from curl result by shell script advise saving to file and grepping on it. I don't really want to save a token to a file if I can avoid it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来你在调用 jq 时翻转了参数名称和值。我认为应该是:
jq -r .access_token
而不是
jq .access_token -r
除此之外,您的解决方案看起来不错。
It looks like you flipped the parameter name and value when calling jq. I think it should be:
jq -r .access_token
not
jq .access_token -r
Other than that your solution looks fine.
步骤 1. 将响应保存在变量中
步骤 2 使用 jq。
步骤 3 消除引号。
Step 1. Save the response in a variable
Step 2 use jq.
Step 3 eliminate the quotes.