Ich versuche eine in Java geschriebene Software zu integrieren, um Daten von Salesforce-Sites mehrerer Organisationen abrufen zu können.Hilfe beim Abrufen von Salesforce-Daten mehrerer Organisationen mit Java
Ich bin neu in Salesforce und das habe ich bisher gemacht. Ich habe einen angeschlossenen App in meinem Entwickler Salesforce-Konto erstellt und schrieb dieses Stück Code auf das, was in Blogs vorhanden ist:
private static final String CLIENT_ID = "my-connected-app-client-id";
private static final String CLIENT_SECRET = "my-connected-app-client-secret";
private static final String REDIRECT_URI = "https://localhost:8443/callback";
private static final String ENVIRONMENT = "https://login.salesforce.com";
private static String tokenUrl = null;
private static final String username = "my-developer-sf-login";
private static final String password = "my-developer-sf-password";
private String accessToken = null;
private String instanceUrl = null;
private List<BasicNameValuePair> getParams(){
ArrayList<BasicNameValuePair> params = new ArrayList<>();
params.add(new BasicNameValuePair("grant_type", "password"));
params.add(new BasicNameValuePair("client_id", CLIENT_ID));
params.add(new BasicNameValuePair("client_secret", CLIENT_SECRET));
params.add(new BasicNameValuePair("redirect_uri", REDIRECT_URI));
params.add(new BasicNameValuePair("username", username));
params.add(new BasicNameValuePair("password", password));
return params;
}
@Override
public boolean connect() throws ConnectException {
System.out.println("Getting a token");
tokenUrl = ENVIRONMENT + "/services/oauth2/token";
HttpClient httpclient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(tokenUrl);
try {
post.setEntity(new UrlEncodedFormEntity(getParams(), "UTF-8"));
HttpResponse response = httpclient.execute(post);
String responseStr = EntityUtils.toString(response.getEntity());
HashMap loginResponse = new ObjectMapper().readValue(responseStr, HashMap.class);
accessToken = loginResponse.get("access_token").toString();
instanceUrl = loginResponse.get("instance_url").toString();
System.out.println("We have an access token: " + accessToken + "\n" + "Using instance " + instanceUrl + "\n\n");
return accessToken != null && instanceUrl != null;
} catch (ClientProtocolException e) {
throw new ConnectException("Unable to connect to salesforce", e);
} catch (IOException e) {
throw new ConnectException("Unable to connect to salesforce", e);
} finally {
post.releaseConnection();
}
}
Mit den Zugriffstoken in dem obigen Programm bekam, ich bin in der Lage, den Rest Endpunkte getroffen und erhalten Sie einige Konto-Details json mit SOSQL-Abfrage-API.
Allerdings habe ich einige sehr grundlegende Fragen. Da ich den Benutzernamen und das Passwort meines Salesforce-Kontos für Entwickler mit meiner eigenen verbundenen App angegeben habe, funktioniert diese Vorgehensweise für das Abrufen von Salesforce-Konten anderer Organisationen? Müssen sie ihre Benutzername/Passwort Informationen zu meiner Bewerbung liefern? Wird es in der Salesforce-Anwendung der Organisation eine Art Konfiguration geben, um eine Verbindung mit meiner neu erstellten Anwendung herstellen zu können?