2016-05-09 20 views
0

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?

Antwort

0

Um Ihre Frage zu beantworten, lassen Sie mich Sie etwas fragen .. Wenn Sie Ihr eigenes Konto auf Google haben und Sie eine Anwendung erstellt, um sich mit OAUTH 2.0 einzuloggen, so denken Sie, dass Sie in der Lage sein, sich in Google einzuloggen Konto eines anderen Benutzers. Ich glaube Nein. Sofern Sie nicht den Admin-Zugang erhalten, können Sie sich nicht anmelden. Stattdessen können Sie den Benutzer bitten, seinen Nutzernamen und sein Passwort mit den Datenschutzrichtlinien einzugeben. Hoffe, das kann Ihnen helfen .. Danke

Verwandte Themen