问题
I'm trying to follow this tutorial to authenticate with Google using their OAuth 2.0 API. However, I would like to make straight curl
calls rather than use their libraries.
I have obtained my Client ID and Client Secret Key. Now I'm trying to get the access token like this:
curl \
--request POST \
--header "Content-Type: application/json" \
--data '{
"client_id":"MY_CLIENT_ID",
"client_secret":"MY_SECRET_KEY",
"redirect_uri": "http://localhost/etc",
"grant_type":"authorization_code"
}' \
"https://accounts.google.com/o/oauth2/token"
However, it is not working. It gives me the following error:
{
"error" : "invalid_request",
"error_description" : "Required parameter is missing: grant_type"
}
Can someone please provide me sample curl call to obtain the access token (and refresh token)?
回答1:
a) the data you provide should be form-encoded instead of presented as a JSON object and b) you should also provide an authorization code value in the "code" parameter. E.g.:
curl -d "client_id=MY_CLIENT_ID&\
client_secret=MY_SECRET_KEY&\
redirect_uri=http://localhost/etc&\
grant_type=authorization_code&\
code=CODE" https://oauth2.googleapis.com/token
回答2:
While not directly using CURL, you can also get and test OAuth tokens using the Google OAuth Playground: https://developers.google.com/oauthplayground/
来源:https://stackoverflow.com/questions/37107847/how-to-get-google-oauth-2-0-access-token-directly-using-curl-without-using-goo