Google App Engine Admin API를 쉘 스크립트에서 두드리기 위해 TOKEN을 가져옵니다.
목적
Google의 App Engine Admin API를 curl에서 두드려야했습니다.
서버 측 등에서 쉘 스크립트로 이동하므로 refresh_token을 이용하여 여러 번 사용할 수있는 형태로 토큰을 얻고 싶습니다.
전제
이번은, 2018/12/06에 사내에서 이미 이용하고 있는 프로젝트에 대해서 설정했기 때문에, 설명하는 순서를 실행할 때, 사람에 따라서는 과금 정보의 등록 화면이나, 다른 동의 화면등이 나올지도 모릅니다 응.
그 근처에 대해서는, 적절히 읽어 주세요.
흐름
이번은, 2018/12/06에 사내에서 이미 이용하고 있는 프로젝트에 대해서 설정했기 때문에, 설명하는 순서를 실행할 때, 사람에 따라서는 과금 정보의 등록 화면이나, 다른 동의 화면등이 나올지도 모릅니다 응.
그 근처에 대해서는, 적절히 읽어 주세요.
흐름
Developer Console의 API Manager으로 이동하여 App Engine Admin API를 선택하고 API를 활성화합니다.
1. Developer Console의 API Manager에 액세스하여 App Engine Admin API를 선택하여 API를 활성화합니다.
Developer Console의 API Manager 로 이동합니다.
이번에 내 목표는 App Engine Admin API이므로 그곳을 선택하고 활성화합니다.
2. API 및 서비스 자격 증명 화면에서 OAuth 클라이언트 ID를 만들고 클라이언트 ID, 클라이언트 비밀 ID를 얻습니다.
API를 사용 설정한 후 API 및 서비스 화면에서 자격 증명으로 이동하여 자격 증명 만들기에서 OAuth 클라이언트 ID를 만듭니다.
애플리케이션 유형을 '기타'로 설정하고 이름을 입력합니다.
그런 다음 클라이언트 ID를 설정하여 클라이언트 ID, 클라이언트 비밀을 기록합니다.
3. 코드 얻기
OAuth 2.0 Scopes for Google APIs 을 참고로 scope를 설정하고 redirect_uri 를 urn:ietf:wg:oauth:2.0:oob로 아래에 액세스하십시오
https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline
쉘을 만들고 URL을 만들고 브라우저에 붙여 넣었습니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export SCOPE="https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform"
export REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob"
echo "https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline"
확인 화면이 나온 후 코드가 표시되므로 기록합니다.
4. refresh_token 얻기
이전 코드를 가져와 refresh_token을 가져옵니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export AUTHORIZATION_CODE="4/AUTHORIZATION_CODE"
export REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob"
curl -X POST --data "code=$AUTHORIZATION_CODE" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "redirect_uri=$REDIRECT_URI" --data "grant_type=authorization_code" --data "access_type=offline" https://www.googleapis.com/oauth2/v4/token
이 때, 취득한 코드가 시간이 지나 무효가 되고 있으면 Bad Request와에서 고민하기 때문에 주의해 주세요. (그래서 잠시 빠졌습니다)
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
잘하면 refresh_token을 얻을 수 있습니다.
access_token은 이제 무시하고 refresh_token을 기록합니다.
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"refresh_token": "1/REFRESH_TOKEN",
"scope": "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin",
"token_type": "Bearer"
}%
5. 쉘 실행시, 클라이언트 ID, 클라이언트 시크릿 ID, refresh_token에 기초하여 access_token을 취득한다
refresh_token을 기반으로 access_token을 가져옵니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token
잘하면 액세스 토큰을 얻을 수 있습니다.
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"scope": "https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/cloud-platform",
"token_type": "Bearer"
}%
6. access_token을 header에 포함시켜 API 실행
쉘 스크립트에서 수행하려는 처리 전에 API 키를 가져옵니다.
json이므로 처리로 jq 명령을 사용하고 싶었지만 작업 서버에 들어 있지 않았기 때문에 awk를 사용하여 처리했습니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
# APIキーの取得処理
export API_KEY=`curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token 2> /dev/null | awk '/access_token/ {match($2, /"(.+)",/, token); print token[1]}'`
# API叩く例
export APPS_ID="test-porject"
export SERVICES_ID="test"
URL="https://appengine.googleapis.com/v1/apps/$APPS_ID/services/$SERVICES_ID/versions/"
curl -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -X GET $URL
참고
Google API의 Access Token을 쉽게 얻을 수 있습니다 htps : // 코 m / 신 1 오가와 / ms / 49 076f62 5f17f18 5
Reference
이 문제에 관하여(Google App Engine Admin API를 쉘 스크립트에서 두드리기 위해 TOKEN을 가져옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zenpou/items/f678d3aa9b5532238f4b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
API를 사용 설정한 후 API 및 서비스 화면에서 자격 증명으로 이동하여 자격 증명 만들기에서 OAuth 클라이언트 ID를 만듭니다.
애플리케이션 유형을 '기타'로 설정하고 이름을 입력합니다.
그런 다음 클라이언트 ID를 설정하여 클라이언트 ID, 클라이언트 비밀을 기록합니다.
3. 코드 얻기
OAuth 2.0 Scopes for Google APIs 을 참고로 scope를 설정하고 redirect_uri 를 urn:ietf:wg:oauth:2.0:oob로 아래에 액세스하십시오
https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline
쉘을 만들고 URL을 만들고 브라우저에 붙여 넣었습니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export SCOPE="https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform"
export REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob"
echo "https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline"
확인 화면이 나온 후 코드가 표시되므로 기록합니다.
4. refresh_token 얻기
이전 코드를 가져와 refresh_token을 가져옵니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export AUTHORIZATION_CODE="4/AUTHORIZATION_CODE"
export REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob"
curl -X POST --data "code=$AUTHORIZATION_CODE" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "redirect_uri=$REDIRECT_URI" --data "grant_type=authorization_code" --data "access_type=offline" https://www.googleapis.com/oauth2/v4/token
이 때, 취득한 코드가 시간이 지나 무효가 되고 있으면 Bad Request와에서 고민하기 때문에 주의해 주세요. (그래서 잠시 빠졌습니다)
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
잘하면 refresh_token을 얻을 수 있습니다.
access_token은 이제 무시하고 refresh_token을 기록합니다.
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"refresh_token": "1/REFRESH_TOKEN",
"scope": "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin",
"token_type": "Bearer"
}%
5. 쉘 실행시, 클라이언트 ID, 클라이언트 시크릿 ID, refresh_token에 기초하여 access_token을 취득한다
refresh_token을 기반으로 access_token을 가져옵니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token
잘하면 액세스 토큰을 얻을 수 있습니다.
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"scope": "https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/cloud-platform",
"token_type": "Bearer"
}%
6. access_token을 header에 포함시켜 API 실행
쉘 스크립트에서 수행하려는 처리 전에 API 키를 가져옵니다.
json이므로 처리로 jq 명령을 사용하고 싶었지만 작업 서버에 들어 있지 않았기 때문에 awk를 사용하여 처리했습니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
# APIキーの取得処理
export API_KEY=`curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token 2> /dev/null | awk '/access_token/ {match($2, /"(.+)",/, token); print token[1]}'`
# API叩く例
export APPS_ID="test-porject"
export SERVICES_ID="test"
URL="https://appengine.googleapis.com/v1/apps/$APPS_ID/services/$SERVICES_ID/versions/"
curl -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -X GET $URL
참고
Google API의 Access Token을 쉽게 얻을 수 있습니다 htps : // 코 m / 신 1 오가와 / ms / 49 076f62 5f17f18 5
Reference
이 문제에 관하여(Google App Engine Admin API를 쉘 스크립트에서 두드리기 위해 TOKEN을 가져옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zenpou/items/f678d3aa9b5532238f4b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline
#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export SCOPE="https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fappengine.admin%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform"
export REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob"
echo "https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=$CLIENT_ID&redirect_uri=$REDIRECT_URI&scope=$SCOPE&access_type=offline"
이전 코드를 가져와 refresh_token을 가져옵니다.
gae_token.sh
#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export AUTHORIZATION_CODE="4/AUTHORIZATION_CODE"
export REDIRECT_URI="urn:ietf:wg:oauth:2.0:oob"
curl -X POST --data "code=$AUTHORIZATION_CODE" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "redirect_uri=$REDIRECT_URI" --data "grant_type=authorization_code" --data "access_type=offline" https://www.googleapis.com/oauth2/v4/token
이 때, 취득한 코드가 시간이 지나 무효가 되고 있으면 Bad Request와에서 고민하기 때문에 주의해 주세요. (그래서 잠시 빠졌습니다)
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
잘하면 refresh_token을 얻을 수 있습니다.
access_token은 이제 무시하고 refresh_token을 기록합니다.
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"refresh_token": "1/REFRESH_TOKEN",
"scope": "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/appengine.admin",
"token_type": "Bearer"
}%
5. 쉘 실행시, 클라이언트 ID, 클라이언트 시크릿 ID, refresh_token에 기초하여 access_token을 취득한다
refresh_token을 기반으로 access_token을 가져옵니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token
잘하면 액세스 토큰을 얻을 수 있습니다.
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"scope": "https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/cloud-platform",
"token_type": "Bearer"
}%
6. access_token을 header에 포함시켜 API 실행
쉘 스크립트에서 수행하려는 처리 전에 API 키를 가져옵니다.
json이므로 처리로 jq 명령을 사용하고 싶었지만 작업 서버에 들어 있지 않았기 때문에 awk를 사용하여 처리했습니다.
gae_token.sh#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
# APIキーの取得処理
export API_KEY=`curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token 2> /dev/null | awk '/access_token/ {match($2, /"(.+)",/, token); print token[1]}'`
# API叩く例
export APPS_ID="test-porject"
export SERVICES_ID="test"
URL="https://appengine.googleapis.com/v1/apps/$APPS_ID/services/$SERVICES_ID/versions/"
curl -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -X GET $URL
참고
Google API의 Access Token을 쉽게 얻을 수 있습니다 htps : // 코 m / 신 1 오가와 / ms / 49 076f62 5f17f18 5
Reference
이 문제에 관하여(Google App Engine Admin API를 쉘 스크립트에서 두드리기 위해 TOKEN을 가져옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zenpou/items/f678d3aa9b5532238f4b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token
{
"access_token": "access_tokenaccess_tokenaccess_tokenaccess_tokenaccess_tokenaccess_token",
"expires_in": 3600,
"scope": "https://www.googleapis.com/auth/appengine.admin https://www.googleapis.com/auth/cloud-platform",
"token_type": "Bearer"
}%
쉘 스크립트에서 수행하려는 처리 전에 API 키를 가져옵니다.
json이므로 처리로 jq 명령을 사용하고 싶었지만 작업 서버에 들어 있지 않았기 때문에 awk를 사용하여 처리했습니다.
gae_token.sh
#!/bin/sh
export CLIENT_ID="client_id.apps.googleusercontent.com"
export CLIENT_SECRET="CLIENT_SECRET"
export REFRESH_TOKEN="1/REFRESH_TOKEN"
# APIキーの取得処理
export API_KEY=`curl -X POST --data "refresh_token=$REFRESH_TOKEN" --data "client_id=$CLIENT_ID" --data "client_secret=$CLIENT_SECRET" --data "grant_type=refresh_token" https://www.googleapis.com/oauth2/v4/token 2> /dev/null | awk '/access_token/ {match($2, /"(.+)",/, token); print token[1]}'`
# API叩く例
export APPS_ID="test-porject"
export SERVICES_ID="test"
URL="https://appengine.googleapis.com/v1/apps/$APPS_ID/services/$SERVICES_ID/versions/"
curl -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -X GET $URL
참고
Google API의 Access Token을 쉽게 얻을 수 있습니다 htps : // 코 m / 신 1 오가와 / ms / 49 076f62 5f17f18 5
Reference
이 문제에 관하여(Google App Engine Admin API를 쉘 스크립트에서 두드리기 위해 TOKEN을 가져옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/zenpou/items/f678d3aa9b5532238f4b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Google App Engine Admin API를 쉘 스크립트에서 두드리기 위해 TOKEN을 가져옵니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zenpou/items/f678d3aa9b5532238f4b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)