Java에서 간단한 Android App을 작성 중이며 최근에 Microsoft Dynamics CRM에서 사용자 토큰을 가져와 구현했습니다. (Azure에서 연결된 응용 프로그램을 만들었습니다. 응용 프로그램 ID가 있습니다. , 비밀 등).Dynamics CRM 토큰 (401 Unauthorized)을 사용할 수 없습니다.
이 애플리케이션의 다른 사용자가 CRM 및 조직에 연결할 수있게하려고합니다.
이제 REST API와 함께 토큰을 사용하고 401 오류가 발생합니다. 여기에 관련된 모든 대답을 읽으십시오. 도움이되는 내용이 없습니다. 내가 사용하고 코드 :
//retrieved the authorization code by this url:
mAuthorizationUrl = Configuration.AUTHORIZE_ENDPOINT + "?response_type=code&client_id="
+ Configuration.CLIENT_ID + "&redirect_uri=" + Configuration.REDIRECT_URI;
...
//Retrieving access_token:
String body_content = "grant_type=authorization_code&client_id=" +
Configuration.CLIENT_ID + "&redirect_uri=" + Configuration.REDIRECT_URI
+ "&code=" + code + "&resource=" + Configuration.CLIENT_ID;
//I don't have app URI (resource) in Azure, so I used app id (client id).
//This worked (see above).
RequestBody body = RequestBody.create(
MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"),
body_content);
Request request = new Request.Builder()
.url(Configuration.TOKEN_RETRIEVAL_ENDPOINT)
.post(body)
.build();
Response response = new OkHttpClient().newCall(request).execute();
String responseString = response.body().string();
JSONObject json = new JSONObject(responseString);
String token = json.getString("access_token");
//NOT WORKING CODE:
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.protocols(Collections.singletonList(Protocol.HTTP_1_1))
.build();
Map<String, String> headers = new ArrayMap<>();
headers.put("Authorization", "Bearer " + token));
headers.put("Accept", "application/json");
request = new Request.Builder()
.url(Configuration.REST_ENDPOINT)
.headers(Headers.of(headers))
.build();
try {
response = okHttpClient
.newCall(request)
.execute();
statusCode = response.code();
}
...
//401 UNAUTHORIZED
엔드 포인트는 내가 사용 :
AUTHORIZE_ENDPOINT = https://login.microsoftonline.com/common/oauth2/authorize
TOKEN_RETRIEVAL_ENDPOINT = https://login.microsoftonline.com/common/oauth2/token
REST_ENDPOINT = url_to_crm /api/data/v9.0/
REST 클라이언트 (예 : 고급 REST 클라이언트)를 사용하여이 요청을 수행하려고 시도 했습니까? 이러한 클라이언트는 REST API를 탐색하고 요청을 확인하는 좋은 방법입니다. – Boris