gpt4 book ai didi

java - 无法使用 Dynamics CRM token (401 未经授权)

转载 作者:行者123 更新时间:2023-12-02 12:04:47 25 4
gpt4 key购买 nike

我正在用 Java 编写一个简单的 Android 应用程序,最近实现了从 Microsoft Dynamics CRM 检索用户 token (我已在 Azure 中创建了一个连接的应用程序,获取了应用程序 ID、 secret 等)。

我希望此应用程序的其他用户能够连接到他们的 CRM 和组织。

现在我尝试将 token 与 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/

最佳答案

以下是两个示例 Java 项目,它们通过 Azure 使用 Dynamics Web API 连接并进行身份验证:

Link 1

Link 2

希望这有帮助。

关于java - 无法使用 Dynamics CRM token (401 未经授权),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46971591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com