Sample code for 30+ languages & platforms
Java

PayPal -- Get an OAuth 2.0 Access Token

See more PayPal Examples

Demonstrates how to send a request to get a PayPal OAuth2 access token. Sends an HTTP request equivalent to the following:
curl https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "Client-Id:Secret" \
  -d "grant_type=client_credentials"

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.DateTime;
import com.chilkatsoft.chilkat2.JsonObject;
import com.chilkatsoft.chilkat2.Rest;
import com.chilkatsoft.chilkat2.StringBuilder;

public class ChilkatExample {

    public static void main(String[] args) {
        // This requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Rest rest = new Rest();

        // Make the initial connection.
        // A single REST object, once connected, can be used for many PayPal REST API calls.
        // The auto-reconnect indicates that if the already-established HTTPS connection is closed,
        // then it will be automatically re-established as needed.
        boolean bAutoReconnect = true;
        String responseStr;
        try {
            rest.connect("api.sandbox.paypal.com", 443, true, bAutoReconnect);

            // Duplicate this request:

            //     curl https://api.sandbox.paypal.com/v1/oauth2/token \
            //       -H "Accept: application/json" \
            //       -H "Accept-Language: en_US" \
            //       -u "Client-Id:Secret" \
            //       -d "grant_type=client_credentials"

            rest.addHeader("Accept", "application/json");
            rest.addHeader("Accept-Language", "en_US");

            // For additional help on where to find  your client ID and API secret, see PayPal Client_ID and API_Secret
            rest.setAuthBasic("PAYPAL_REST_API_CLIENT_ID", "PAYPAL_REST_API_SECRET");

            rest.addQueryParam("grant_type", "client_credentials");

            responseStr = rest.fullRequestFormUrlEncoded("POST", "/v1/oauth2/token");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println(rest.getLastRequestHeader());

        // A sample response:

        //     {
        //       "scope": "https://api.paypal.com/v1/payments/.* https://api.paypal.com/v1/vault/credit-card https://api.paypal.com/v1/vault/credit-card/.*",
        //       "access_token": "EEwJ6tF9x5WCIZDYzyZGaz6Khbw7raYRIBV_WxVvgmsG",
        //       "token_type": "Bearer",
        //       "app_id": "APP-6XR95014BA15863X",
        //       "expires_in": 28800
        //     }

        JsonObject json = new JsonObject();
        json.load(responseStr);
        json.setEmitCompact(false);

        // Check the response status code.  A 200 indicates success..
        if (rest.getResponseStatusCode() != 200) {
            System.out.println(json.emit());
            System.out.println("Failed.");
            return;
        }

        // Given that the access token expires in approx 8 hours,
        // let's record the date/time this token was created.
        // This will allow us to know beforehand if the token
        // is expired (and we can then fetch a new token).
        DateTime dateTime = new DateTime();
        boolean bLocalTime = false;
        int dtNow = (int) dateTime.getAsUnixTime(bLocalTime);
        json.appendInt("tokenCreateTimeUtc", dtNow);

        // Examine the access token and save to a file.
        System.out.println("Access Token: " + json.stringOf("access_token"));
        System.out.println("Full JSON Response:");
        System.out.println(json.emit());

        StringBuilder sbResponse = new StringBuilder();
        sbResponse.append(json.emit());
        boolean bEmitBom = false;
        sbResponse.writeFile("qa_data/tokens/paypal.json", "utf-8", bEmitBom);
    }
}