Je possède un compte de sentiers crm msdynamics, enregistrer mon Crm dans Azure Active Directory application web/api et url comme http://localhost et je lui ai donné la permission pour Dynamic CRM en ligne en vérifiant le délégué autorisation.dynamique Ms API Web 401 Unauthorized
Ci-dessous le code que je utilise pour obtenir le access_token
private static AuthenticationResult getAccessTokenFromUserCredentials() throws Exception {
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
/*
* Replace {client_id} with ApplicationID and {password} with
* password that were used to create Service Principal above.
*/
ClientCredential credential = new ClientCredential(CLIENT_ID,CLIENT_SECRET);
Future<AuthenticationResult> future = context.acquireToken("https://XXXXXXXX.api.crm8.dynamics.com",
credential, null);
result = future.get();
} finally {
service.shutdown();
}
if (result == null) {
throw new ServiceUnavailableException("authentication result was null");
}
return result;
}
Maintenant, je reçois le access_token et le code que je utilise pour charger des prospects ..
URL url = new URL(RESOURCE + "/api/data/v8.0/opportunities?$select=name,&$expand=parentcontactid($select=contactid,firstname,lastname,jobtitle,company,emailaddress1,telephone1,telephone2)&$filter=statecode%20eq%200");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer " + token);
connection.setRequestProperty("Content-Type", "application/json; charset=utf-8");
connection.setRequestProperty("OData-MaxVersion", "4.0");
connection.addRequestProperty("OData-Version", "4.0");
int responseCode = connection.getResponseCode();
System.out.println("res code : "+ responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
Mais j'obtiens le code de réponse 401 Non autorisé. Est-ce que quelqu'un peut m'aider s'il vous plait?
WebAPI est vraiment destiné à être utilisé à partir du CRM à l'intérieur. De l'extérieur, vous êtes mieux d'utiliser le Xrm.Tooling.Connector (ex-Xrm.Client) – Alex
Mais je dois le connecter via api de repos, je ne suis pas censé utiliser le point de terminaison de savon J'ai résolu cette utilisation en assignant rôle et en ajoutant cet ID de client AAD à l'utilisateur de l'application CRM. Mais maintenant tâche est que je ne devrais pas utiliser Azure ClientID et ClientSecret plutôt d'utiliser les informations d'identification CRM (nom d'utilisateur/mot de passe) pour se connecter au CRM. Toute aide serait appréciée .. – Jagan