gpt4 book ai didi

java - 我已经为 POST 方法提供了正确的参数和 header ,但响应代码是 400

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

我试图将 SnapChat 登录套件集成到我的 Web 应用程序中。我能够从 SnapChat 获取授权代码,但在获取访问 token 时遇到问题。我已经完美地完成了 FB、Google、Instagram 登录集成,但这个我完全迷失了。

我尝试对参数进行编码,更改 header 的顺序,但它总是给我 400 错误请求。

try {
URL url = null;
if(service.equals(APIConstants.GOOGLE))
url = new URL(SNSIdentifications.GOOGLE_TOKEN_REQUEST_URL);
else if (service.equals(APIConstants.FACEBOOK))
url = new URL(SNSIdentifications.FACEBOOK_TOKEN_REQUEST_URL);
else if (service.equals(APIConstants.INSTAGRAM))
url = new URL(SNSIdentifications.INSTAGRAM_TOKEN_REQUEST_URL);
else
url = new URL(SNSIdentifications.SNAPCHAT_TOKEN_REQUEST_URL);
conn = (HttpsURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
if(service.equals(APIConstants.SNAPCHAT)) {
// String userCredentials = URLEncoder.encode(client_id + ":" + secret, "UTF-8");
String userCredentials = client_id + ":" + secret;
byte[] data = Base64.getEncoder().encode(userCredentials.getBytes());
String authorizationHeaderBase64 = new String(data);
conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded" );
conn.setRequestProperty( "Authorization", "Basic " + authorizationHeaderBase64);
// conn.setRequestProperty("charset", "utf-8");
//Integer.toString(payload.getBytes(StandardCharsets.UTF_8).length)
// conn.setRequestProperty( "Content-Length", Integer.toString(payload.getBytes(StandardCharsets.UTF_8).length) );

writer = new OutputStreamWriter(conn.getOutputStream());
// writer.write(URLEncoder.encode(payload, "UTF-8"));
writer.write(params);
writer.flush();
System.out.println(conn.getResponseCode() + " " + conn.getResponseMessage() + " ");

} else {
writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(params);
writer.flush();
}
int responseCode = conn.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK) {
return new JSONObject(fetchResponse(conn));
}
} catch (IOException e) {
e.printStackTrace();
}

我应该期望上面代码中的访问 token 、刷新 token 和 expires_in 值,但不幸的是,由于 400 错误请求错误,它不能。

最佳答案

我解决了这个问题。事实证明这是几个问题的组合。当您遇到我发布的问题时,请检查以下内容:

  1. 确保您使用正确的客户端 ID 和 key 。
  2. 如果您要添加代码质询和代码质询方法参数,则需要有代码验证程序才能获取访问 token 。如果您没有这些参数,则无需担心获取访问 token 。
  3. 设置 header “授权”时使用 base64 编码,而不是 base16。 (Snapchat 页面显示为 base16,但在示例中为 64)。
  4. 再次检查您的网址、ID、密码以获取授权码。

:)

关于java - 我已经为 POST 方法提供了正确的参数和 header ,但响应代码是 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57048108/

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