簡體   English   中英

curl響應/ github oauth

[英]curl response / github oauth

我正在嘗試在bash腳本中為github使用OAUTH身份驗證。

這個:

curl -u $USER_NAME --silent -d '{"scopes":["repo"]}' \
    https://api.github.com/authorizations

的工作,結果我得到這樣的回應:

"created_at": "2012-09-03T13:02:30Z",
"token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"updated_at": "2012-09-03T13:02:30Z",
"note_url": null,
"note": null,
"url": "https://api.github.com/authorizations/620793",
"app": {
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api",
    "name": "GitHub API"
},
"id": 620793,
"scopes": [
    "repo"
]

但是我需要將"token":的值保留在變量中,以備將來使用。 我該怎么辦?

您可以使用sed和grep獲得所需的內容:

curl -u $USER_NAME --silent -d '{"scopes":["repo"]}' "https://api.github.com/authorizations" | grep '"token":' | sed 's/.*:\s\+"\([^"]\+\).*/\1/g'

我嘗試設置建議工具jsawk,以在此處發布另一種替代方法,但是jsawk需要spidermonkey-bin,現在您無法在ubuntu中獲得spidermonkey-bin,並且打包了此程序的PPA不再擁有它。 現在,您需要從源代碼進行編譯。 太麻煩了,要獲得稍微清潔的解決方案。

我這樣做是為了從不同的json響應中獲取某些數據:

yourcodehere | grep token | awk '{ print $2 }' | sed s/\"//g | sed s/,//g)

與Onilton的操作類似,但是只是使用awk從該行中獲取第二個項目,使用sed去除引號和逗號。 我相信,至少有一個json庫或一些用於bash的東西(可能不止一個)可以將其解析為所需的變量,但我什至沒有看過。 我並不是說這比Onilton的方法更好,但這只是另一種選擇。 有用。 如果我有更好的awk fu,我可能可以使用awk來完成所有這些操作,並且不需要sed,但是我不需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM