+ Start a Discussion
SImmySImmy 

PLease help me with oauth through JAva

import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.URL;
import java.util.Base64;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class OauthAuthentication {
	private static final Pattern pat = Pattern.compile(".*\"access_token\"\\s*:\\s*\"([^\"]+)\".*");
	private static final String clientId = "jdiwiweoiwe.NxkdgEZTQHC3SvdVQyFm5eSmbiDCQ";//clientId
	private static final String clientSecret = "fhdkhskjs";//client secret
	private static final String tokenUrl = 'https://login.salesforce.com/services/oauth2/token";
	private static final String auth = clientId + ":" + clientSecret;
	private static final String authentication = Base64.getEncoder().encodeToString(auth.getBytes());
	private static String userName="xyz";
	private static String password="abc";
	public static void main(String[] args) throws IOException 
	{
	
	//Username is netId for the person making the call and the password is there password
	String content = "grant_type=password&username=" + userName + "&password=" + password;
    BufferedReader reader = null;
    HttpsURLConnection connection = null;
    String returnValue = "";
    try {
    	System.out.println("authentication"+authentication);
        URL url = new URL(tokenUrl);
        connection = (HttpsURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setDoOutput(true);
        connection.setRequestProperty("Authorization", "Basic " + authentication);
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connection.setRequestProperty("Accept", "application/json");
       
        PrintStream os = new PrintStream(connection.getOutputStream());
        os.print(content);
        os.close();
        System.out.println("content"+content);
        /*reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line = null;
        StringWriter out = new StringWriter(connection.getContentLength() > 0 ? connection.getContentLength() : 2048);
        while ((line = reader.readLine()) != null) {
            out.append(line);
        }
        String response = out.toString();
        System.out.println("output="+response);
        Matcher matcher = pat.matcher(response);
        if (matcher.matches() && matcher.groupCount() > 0) {
            returnValue = matcher.group(1);
        }*/
        System.out.println("response : " + connection.getResponseMessage());
 
    } catch (Exception e) 
    {
        System.out.println("Error : " + e.getMessage()+"\n"+e.getCause()+"\n"+e.getStackTrace()+"\n"+e.getLocalizedMessage());
    } finally {
        if (reader != null) {
            try {
                reader.close();
            } catch (IOException e) {
            }
        }
        connection.disconnect();
    }
	}
}

Error Response : Bad Request

 
VinayVinay (Salesforce Developers) 
Hi,

Check below links that can help you.

https://developer.okta.com/blog/2019/10/30/java-oauth2
https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/code_sample_auth_oauth.htm
https://developer.salesforce.com/forums/?id=906F00000008sNHIAY
https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/create_java_client_oauth.htm#:~:text=Run%20a%20Java%20client%20that,the%20channel%20with%20OAuth%20authentication.&text=Obtain%20an%20OAuth%20bearer%20access,token%20in%20the%20connector%20example.

Thanks,
Vinay Kumar
SImmySImmy
Could you please help me with the code which I've written because I tried the mentioned link previously but I was unable to do so. There were multiple classes which I didn't know how to create like defaultclient etc.