public class REST_CallOut_SalesforceOAuth {
// Metode untuk mendapatkan Access Token dari org tujuan
public static String getAccessToken() {
// URL Endpoint untuk OAuth 2.0 token
String tokenEndpoint = 'https://login.salesforce.com/services/oauth2/token';
// Setup HTTP Request
HttpRequest req = new HttpRequest();
req.setEndpoint(tokenEndpoint);
req.setMethod('POST');
req.setHeader('Content-Type', 'application/x-www-form-urlencoded');
// OAuth 2.0 credentials dari Connected App di org tujuan
String clientId = 'YOUR_CONSUMER_KEY'; // Ganti dengan Client ID (Consumer Key)
String clientSecret = 'YOUR_CONSUMER_SECRET'; // Ganti dengan Client Secret (Consumer Secret)
String username = 'YOUR_ORG_TUJUAN_USERNAME'; // Ganti dengan username org tujuan
String password = 'YOUR_ORG_TUJUAN_PASSWORD_AND_SECURITY_TOKEN'; // Gabungan password + security token dari org tujuan
// Set body untuk request, sesuai dengan format OAuth 2.0
String body = 'grant_type=password'
+ '&client_id=' + EncodingUtil.urlEncode(clientId, 'UTF-8')
+ '&client_secret=' + EncodingUtil.urlEncode(clientSecret, 'UTF-8')
+ '&username=' + EncodingUtil.urlEncode(username, 'UTF-8')
+ '&password=' + EncodingUtil.urlEncode(password, 'UTF-8');
req.setBody(body);
// Eksekusi HTTP Request
Http http = new Http();
HttpResponse res = http.send(req);
// Jika responsenya sukses (status 200), ambil token dari response body
if (res.getStatusCode() == 200) {
// Parsing JSON response untuk mendapatkan access token
Map<String, Object> responseBody = (Map<String, Object>) JSON.deserializeUntyped(res.getBody());
String accessToken = (String) responseBody.get('access_token');
// Log token untuk debugging (jangan gunakan ini di produksi)
System.debug('Access Token: ' + accessToken);
// Kembalikan access token
return accessToken;
} else {
// Log jika terjadi kesalahan dan return null
System.debug('Error Response: ' + res.getBody());
return null;
}
}
}