jakarta-ee - Instagram API 错误 500 个带有强制签名的 UTF-8 主题标签

标签 jakarta-ee utf-8 instagram urlencode instagram-api

我从一个简单的 instagram GET 请求中收到 500 错误。当主题标签包含正常的 ascii 字符时,或者当我的应用程序未选中“强制签名请求”复选框时,我的代码可以工作。但是当我尝试使用 utf8 主题标签并强制执行签名请求时,我无法得到任何工作。我看到签名的请求很快就会成为强制性的,所以我需要它来工作。我想获取像#über 这样的标签的所有图像。

public static String signRequest(String key, String data) throws Exception {
    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
    SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
    sha256_HMAC.init(secret_key);
    return Hex.encodeHexString(sha256_HMAC.doFinal(data.getBytes("UTF-8")));
}

public static void getLatestImagesForHashtag(String hashtag, String client_id, String secret) throws Exception {
    String endpoint = "/tags/" + URLEncoder.encode(hashtag, "UTF-8") + "/media/recent";
    String request_data = endpoint + "|client_id=" + client_id;
    System.out.println("SIGNING DATA: " + request_data);
    String signature = InstagramUtil.signRequest(secret, request_data);
    System.out.println("SIG VAL: " + signature);
    String url = "https://api.instagram.com/v1" + endpoint + "?client_id=" + client_id + "&sig=" + signature;
    URL obj;
    try {
        obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        //Blah blah blah

我得到的回应
Info:   SIGNING DATA: /tags/%C3%BCber/media/recent|client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Info:   SIG VAL: 503fd3fb7072eea8284576940b3fe75125a5bbbd9f505f22507776cbb6760d5d
Info:   Sending 'GET' request to URL : https://api.instagram.com/v1/tags/%C3%BCber/media/recent?client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&sig=503fd3fb7072eea8284576940b3fe75125a5bbbd9f505f22507776cbb6760d5d
Info:   Response Code : 500
Info:   Response Msg : INTERNAL SERVER ERROR

数据响应是:糟糕,发生错误。

我尝试了许多不同的组合,在端点和签名数据中对主题标签进行编码。如果是签名问题,我收到 500 错误而不是 403 很奇怪。我在编码方面做错了吗?

最佳答案

我刚刚收到来自 Instagram 的消息,告诉我这确实是一个错误,现在已修复!\o/

Hi, Thanks for your report and interest in the Instagram platform. The issue has been fixed. Best, Jackie - Instagram team

关于jakarta-ee - Instagram API 错误 500 个带有强制签名的 UTF-8 主题标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32170756/

相关文章:

c++ - C++11 正则表达式是否适用于 UTF-8 字符串?

java - 单例、枚举和匿名内部类

Java:从 InputStream 读取并不总是读取相同数量的数据

java - Java 安全管理器的使用

java - Android - 如何在 android 中将字符串转换为 utf-8

instagram - 过期的媒体链接

java - 无需 session 的身份验证、授权和用户跟踪

swift - 我如何添加字符串扩展以将字符串转换为 utf8

instagram - 如何从 Instagram URL 获取媒体 ID

javascript - 如何制作 Instagram "Open in app"按钮?