下面是从贾森拉蒂摩尔的博客文章的例子:CRM Web API Using Java
同样我们在微软的朋友帮助我们在认证前 通过提供Java版在Azure Active Directory验证 库(ADAL)的。您可以设置在这里的 信息Maven的依赖性: http://mvnrepository.com/artifact/com.microsoft.azure/adal4j
在这种情况下,我使用的身份验证一个硬编码的用户名和密码 。
//Azure Application Client ID
private final static String CLIENT_ID = "00000000-0000-0000-0000-000000000000";
//CRM URL
private final static String RESOURCE = "https://org.crm.dynamics.com";
//O365 credentials for authentication w/o login prompt
private final static String USERNAME = "[email protected]";
private final static String PASSWORD = "password";
//Azure Directory OAUTH 2.0 AUTHORIZATION ENDPOINT
private final static String AUTHORITY =
"https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000";
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
Future<AuthenticationResult> future = context.acquireToken(RESOURCE,
CLIENT_ID,
USERNAME,
PASSWORD, null);
result = future.get();
} finally {
service.shutdown();
}
String token = result.getAccessToken();
我偶然发现的另一件事是,Java的HttpURLConnection类的 HTTP请求不支持PATCH方法本身(这 做更新多个字段时,由Web API) 。这个 解决了指定POST方法并添加额外的“X-HTTP-Method-Override”属性。
connection.setRequestProperty("X-HTTP-Method-Override", "PATCH");
connection.setRequestMethod("POST");
您可以在GitHub上检查出的代码: https://github.com/jlattimer/CrmWebApiJava
这个答案过于脆弱的链接腐烂。你能用这种方式来回答这个问题吗? – Ceribia
我已经添加了来自Jason Lattimer博客的示例 – Aron
太棒了!感谢您的改进。 – Ceribia