lightning developer apis java rest oauth salesforce restful-authentication

java - developer - ¿Salesforce REST API Login?



salesforce rest service authentication (4)

Estoy examinando una muestra que está en el sitio del desarrollador de Salesforce.

En esa muestra, cuando hacemos clic en un enlace, será redirigido a la página de inicio de sesión de salesforce. Si el inicio de sesión es exitoso, se emite un token de acceso.

No quiero que mi aplicación redirija a la página de inicio de sesión de salesforce. En la muestra existente, la variable de entorno se establece en,

"https://login.salesforce.com"

¿Qué debo hacer para evitar el redireccionamiento a la página de inicio de sesión de salesforce?



Este es un código Java de muestra que utiliza el flujo de OAuth de nombre de usuario y contraseña:

public class AccountQuery { // The connection data private static final String query = "SELECT Name, Idfrom Account"; private static final String clientId = "theID"; private static final String clientSecret = "theSecret"; // THis is meaningless in our context private static final String redirectUri = "https://localhost:8443/_callback"; private static final String environment = "https://login.salesforce.com"; private static String tokenUrl = null; private static final String username = "username"; private static final String password = "passwordPlusSecret"; private static String accessToken = null; private static String instanceUrl = null; public static void main( String[] args ) { // Step 0: Connect to SalesForce. System.out.println("Getting a token"); tokenUrl = environment + "/services/oauth2/token"; HttpClient httpclient = new HttpClient(); PostMethod post = new PostMethod(tokenUrl); post.addParameter("grant_type", "password"); post.addParameter("client_id", clientId); post.addParameter("client_secret", clientSecret); post.addParameter("redirect_uri", redirectUri); post.addParameter("username", username); post.addParameter("password", password); try { httpclient.executeMethod(post); try { JSONObject authResponse = new JSONObject(new JSONTokener(new InputStreamReader(post.getResponseBodyAsStream()))); System.out.println("Auth response: " + authResponse.toString(2)); accessToken = authResponse.getString("access_token"); instanceUrl = authResponse.getString("instance_url"); System.out.println("Got access token: " + accessToken); } catch (JSONException e) { e.printStackTrace(); } } catch (HttpException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } finally { post.releaseConnection(); } System.out.println("We have an access token: " + accessToken + "/n" + "Using instance " + instanceUrl + "/n/n"); HttpClient httpclient = new HttpClient(); GetMethod get = new GetMethod(instanceUrl + "/services/data/v28.0/query"); // set the token in the header get.setRequestHeader("Authorization", "OAuth " + accessToken); // set the SOQL as a query param NameValuePair[] params = new NameValuePair[1]; params[0] = new NameValuePair("q",query); get.setQueryString(params); try { httpclient.executeMethod(get); if (get.getStatusCode() == HttpStatus.SC_OK) { // Now lets use the standard java json classes to work with the results JSONObject response = new JSONObject( new JSONTokener( new InputStreamReader(get.getResponseBodyAsStream()))); System.out.println("Query response: "+ response.toString(2));//.substring(0, 500)); System.out.println(response.getString("totalSize") + " record(s) returned/n/n"); JSONArray results = response.getJSONArray("records"); Account[] accounts = new Gson().fromJson(results.toString(), Account[].class); return accounts; } } catch (Exception e){ e.printStackTrace(); }finally { get.releaseConnection(); } } }