How to get Google OAuth 2.0 Access token directly using curl? (without using Google Libraries)

31,127

Solution 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

Solution 2

While not directly using CURL, you can also get and test OAuth tokens using the Google OAuth Playground: https://developers.google.com/oauthplayground/

Share:
31,127

Related videos on Youtube

Saqib Ali
Author by

Saqib Ali

Updated on November 08, 2020

Comments

  • Saqib Ali
    Saqib Ali over 3 years

    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)?

  • Saqib Ali
    Saqib Ali almost 8 years
    Is this a get or a post?
  • Hans Z.
    Hans Z. almost 8 years
    Using -d automatically turns it in to a POST and sets the desired content type
  • Wheezil
    Wheezil over 5 years
    Can this technique be extended to cover two-legged OAuth2?
  • Tad
    Tad over 4 years
    The code parameter comes from the original auth request: developers.google.com/android-publisher/authorization