Nachdem Sie diesen Artikel bis zum Ende gelesen haben, können Sie:
Beispielcode
python_sfdc_get_user.py
sf = Salesforce(username=USERNAME, password=PASSWORD,
security_token=SECURITY_TOKEN, sandbox=False)
res = sf.query(
'SELECT Id, Name, LastLoginDate FROM User WHERE Name =\'nsuhara\'')
print(json.dumps(res, indent=4))
Ausführungsergebnis
python_result.json
{
"totalSize": 1,
"done": true,
"records": [
{
"attributes": {
"type": "User",
"url": "/services/data/v38.0/sobjects/User/0056F000006StK9QAK"
},
"Id": "0056F000006StK9QAK",
"Name": "nsuhara",
"LastLoginDate": "2019-05-18T13:07:00.000+0000"
}
]
}
Umgebung | Ver. | Note |
---|---|---|
macOS Mojave | 10.14.4 | OS |
Salesforce | Spring'19 | SaaS |
Python | 3.7.3 | Python |
simple-salesforce | 0.74.2 | Python |
requests | 2.22.0 | Python |
Java | 1.8.0_192 | Java |
httpclient | 4.5.6 | Java |
json | 20180813 | Java |
jackson-databind | 2.9.8 | Java |
Ich denke, dass Sie Ihr Verständnis vertiefen können, indem Sie den Implementierungsinhalten und dem Quellcode tatsächlich folgen. Bitte benutzen Sie es auf jeden Fall.
Einstellungen> Erstellen> Anwendungen> Verbundene Anwendungen> Klicken Sie auf "Neu"
Artikelname | Wert einstellen |
---|---|
Name der verbundenen Anwendung | Sample |
API-Referenzname | Sample |
Kontakt E-mail | [email protected] |
Aktivieren Sie die OAuth-Einstellungen | TRUE |
Rückruf-URL | https://sample.auth0.com/login/callback |
Ausgewählter OAuth-Bereich | Zugriff auf grundlegende Informationen |
Webserver-Flussgeheimnis erforderlich | TRUE |
`Bitte warten Sie 2-10 Minuten, bis die Änderungen auf dem Server wirksam werden, bevor Sie die verbundene Anwendung verwenden. ``
Variablennamen | Erläuterung | Bemerkungen |
---|---|---|
HOST | Production: login.salesforce.com, Sandbox: test.salesforce.com | |
CLIENT_ID | Verbraucherschlüssel | Referenz 1 |
CLIENT_SECRET | Verbrauchergeheimnis | Referenz 1 |
USERNAME | Salesforce-Benutzername | |
PASSWORD | Salesforce-Kennwort | |
SECURITY_TOKEN | Salesforce-Sicherheitstoken | Referenz 2 |
PASSWORD_AND_SECURITY_TOKEN | Salesforce-Kennwort+Sicherheitstoken |
** (Referenz 1) **
** (Ref. 2) **
Sicherheitstoken können unter "Meine Einstellungen"> "Persönlich"> "Mein Sicherheitsgespräch zurücksetzen" erneut ausgestellt werden.
shell_script_sfdc_get_user.sh
#!/bin/sh
export HOST='<Parameterreferenz>'
export CLIENT_ID='<Parameterreferenz>'
export CLIENT_SECRET='<Parameterreferenz>'
export USERNAME='<Parameterreferenz>'
export PASSWORD_AND_SECURITY_TOKEN='<Parameterreferenz>'
export INSTANCE_URL=`curl -s https://$HOST/services/oauth2/token -d "grant_type=password" -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "username=$USERNAME" -d "password=$PASSWORD_AND_SECURITY_TOKEN" | awk 'BEGIN{FS="instance_url\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
export ACCESS_TOKEN=`curl -s https://$HOST/services/oauth2/token -d "grant_type=password" -d "client_id=$CLIENT_ID" -d "client_secret=$CLIENT_SECRET" -d "username=$USERNAME" -d "password=$PASSWORD_AND_SECURITY_TOKEN" | awk 'BEGIN{FS="access_token\":"}{print $2}' | awk 'BEGIN{FS=","}{print $1}' | sed -e 's/\"//g'`
export SOQL="SELECT+Id,Name,LastLoginDate+FROM+User+WHERE+Name='nsuhara'"
curl $INSTANCE_URL/services/data/v45.0/query?q=$SOQL -H "Authorization: OAuth $ACCESS_TOKEN" -H "X-PrettyPrint:1"
shell_script_result.json
{
"totalSize": 1,
"done": true,
"records": [
{
"attributes": {
"type": "User",
"url": "/services/data/v45.0/sobjects/User/0056F000006StK9QAK"
},
"Id": "0056F000006StK9QAK",
"Name": "nsuhara",
"LastLoginDate": "2019-05-18T14:04:05.000+0000"
}
]
}
python_sfdc_get_user.py
import json
from simple_salesforce import Salesforce
USERNAME = '<Parameterreferenz>'
PASSWORD = '<Parameterreferenz>'
SECURITY_TOKEN = '<Parameterreferenz>'
def main():
sf = Salesforce(username=USERNAME, password=PASSWORD,
security_token=SECURITY_TOKEN, sandbox=False)
res = sf.query(
'SELECT Id, Name, LastLoginDate FROM User WHERE Name =\'nsuhara\'')
print(json.dumps(res, indent=4))
if __name__ == '__main__':
main()
python_result.json
{
"totalSize": 1,
"done": true,
"records": [
{
"attributes": {
"type": "User",
"url": "/services/data/v38.0/sobjects/User/0056F000006StK9QAK"
},
"Id": "0056F000006StK9QAK",
"Name": "nsuhara",
"LastLoginDate": "2019-05-18T14:06:19.000+0000"
}
]
}
java_App.java
package rest_api;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONTokener;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class App {
static final String HOST = "<Parameterreferenz>";
static final String CLIENT_ID = "<Parameterreferenz>";
static final String CLIENT_SECRET = "<Parameterreferenz>";
static final String USERNAME = "<Parameterreferenz>";
static final String PASSWORD_AND_SECURITY_TOKEN = "<Parameterreferenz>";
static final String GRANT_SERVICE = "/services/oauth2/token?grant_type=password";
public static void main(String[] args) {
String UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36";
List<Header> headers = new ArrayList<Header>();
headers.add(new BasicHeader("User-Agent", UA));
HttpClient httpClient = HttpClientBuilder.create().setDefaultHeaders(headers).build();
String loginURL = "https://" + HOST + GRANT_SERVICE + "&client_id=" + CLIENT_ID + "&client_secret="
+ CLIENT_SECRET + "&username=" + USERNAME + "&password=" + PASSWORD_AND_SECURITY_TOKEN;
HttpPost httpPost = new HttpPost(loginURL);
HttpResponse response = null;
try {
response = httpClient.execute(httpPost);
} catch (ClientProtocolException cpException) {
// Handle protocol exception
} catch (IOException ioException) {
// Handle system IO exception
}
final int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
System.out.println("Error authenticating to Force.com: " + statusCode);
// Error is in EntityUtils.toString(response.getEntity())
return;
}
String getResult = null;
try {
getResult = EntityUtils.toString(response.getEntity());
} catch (IOException ioException) {
// Handle system IO exception
}
JSONObject jsonObject = null;
String loginAccessToken = null;
String loginInstanceUrl = null;
try {
jsonObject = (JSONObject) new JSONTokener(getResult).nextValue();
loginInstanceUrl = jsonObject.getString("instance_url");
loginAccessToken = jsonObject.getString("access_token");
} catch (JSONException jsonException) {
// Handle JSON exception
}
System.out.println(response.getStatusLine());
httpPost.releaseConnection();
try {
final URIBuilder builder = new URIBuilder(loginInstanceUrl);
final String SOQL = "SELECT Id, Name, LastLoginDate FROM User WHERE Name = \'nsuhara\'";
builder.setPath("/services/data/v45.0/query/").setParameter("q", SOQL);
final HttpGet get = new HttpGet(builder.build());
get.setHeader("Authorization", "Bearer " + loginAccessToken);
final HttpResponse queryResponse = httpClient.execute(get);
ObjectMapper mapper = new ObjectMapper();
final JsonNode queryResults = mapper.readValue(queryResponse.getEntity().getContent(), JsonNode.class);
System.out.println("queryResults:" + queryResults);
} catch (Exception e) {
// Handle exception
}
}
}
java_result.json
{
"totalSize": 1,
"done": true,
"records": [
{
"attributes": {
"type": "User",
"url": "/services/data/v45.0/sobjects/User/0056F000006StK9QAK"
},
"Id": "0056F000006StK9QAK",
"Name": "nsuhara",
"LastLoginDate": "2019-05-18T14:09:31.000+0000"
}
]
}
apex_SampleRestApi.cls
@RestResource(urlMapping='/sample/restapi/*')
global without sharing class SampleRestApi {
@HttpGet
global static List<User> getUsers() {
return [SELECT Id, Name, LastLoginDate FROM User WHERE Name = 'nsuhara' LIMIT 1];
}
}
Einstellungen> Benutzer verwalten> Berechtigungssatz (oder Profil)> Systemberechtigung bearbeiten
Einstellungen> Benutzer verwalten> Berechtigungssatz (oder Profil)> Apex-Klassenzugriff bearbeiten
python_requests_sfdc.py
import requests
HOST = '<Parameterreferenz>'
CLIENT_ID = '<Parameterreferenz>'
CLIENT_SECRET = '<Parameterreferenz>'
USERNAME = '<Parameterreferenz>'
PASSWORD_AND_SECURITY_TOKEN = '<Parameterreferenz>'
def main():
params = {
'grant_type': 'password',
'client_id': CLIENT_ID,
'client_secret': CLIENT_SECRET,
'username': USERNAME,
'password': PASSWORD_AND_SECURITY_TOKEN
}
res_post = requests.post(
'https://{}/services/oauth2/token'.format(HOST), params=params)
access_token = res_post.json().get('access_token')
instance_url = res_post.json().get('instance_url')
services_url = '/services/apexrest/sample/restapi'
headers = {
'Content-type': 'application/json',
'Accept-Encoding': 'gzip',
'Authorization': 'Bearer {}'.format(access_token)
}
res_get = requests.request(method='get', url=instance_url+services_url,
headers=headers, params={'xxx': 'yyy'}, timeout=10)
print(res_get.status_code)
print(res_get.json())
if __name__ == '__main__':
main()
python_result.json
[
{
"attributes": {
"type": "User",
"url": "/services/data/v45.0/sobjects/User/0056F000006StK9QAK"
},
"Id": "0056F000006StK9QAK",
"Name": "nsuhara",
"LastLoginDate": "2019-05-18T14: 11: 22.000+0000"
}
]
Betrachten Sie das Implementierungsmodell basierend auf der Umgebung und den Bedingungen
No. | Prüfungsbedingungen | Implementierungsmodell | Stichprobe |
---|---|---|---|
1 | Wenn ein Paket für Salesforce verfügbar ist | Implementieren Sie mit einem Paket | Python-Beispiel |
2 | Wenn das Ausführungsergebnis von SOQL ausreicht | Implementieren Sie mithilfe einer HTTP-Anforderung | Beispiel für ein Shell-Skript,Java-Beispiel |
3 | Anders als oben | Implementieren Sie Apex REST Web Services | Beispiel für die Implementierung eines REST-Webdienstes |
Recommended Posts