匿名上传文件对象到 Imgur API (JSON) 会出现身份验证错误 401

2023-11-21

我创建了一个类UploadToImgurTask作为一个 AsyncTask,它采用单个文件路径参数,创建并设置 MultiPartEntity,然后使用 Apache HttpClient 上传带有所述实体的图像。来自 Imgur 的 JSON 响应保存在 JSONObject 中,我将其内容显示在 LogCat 中以供我自己理解。

这是我从 Imgur 收到的 JSON 的屏幕截图:

Imgur Screenshot

我在 api.imgur.com 上查找了错误状态 401,它表示我需要使用 OAuth 进行身份验证despite事实上,Imgur 已经非常明确地指出,如果图像是匿名上传的,应用程序不需要使用 OAuth(这就是我现在正在做的事情)。

class UploadToImgurTask extends AsyncTask<String, Void, Boolean> {
    String upload_to;

    @Override
    protected Boolean doInBackground(String... params) {
        final String upload_to = "https://api.imgur.com/3/upload.json";
        final String API_key = "API_KEY";
        final String TAG = "Awais";

        HttpClient httpClient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        HttpPost httpPost = new HttpPost(upload_to);

        try {
            final MultipartEntity entity = new MultipartEntity(
                    HttpMultipartMode.BROWSER_COMPATIBLE);

            entity.addPart("image", new FileBody(new File(params[0])));
            entity.addPart("key", new StringBody(API_key));

            httpPost.setEntity(entity);

            final HttpResponse response = httpClient.execute(httpPost,
                    localContext);

            final String response_string = EntityUtils.toString(response
                    .getEntity());

            final JSONObject json = new JSONObject(response_string);

            Log.d("JSON", json.toString()); //for my own understanding 

            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

doInBackground 将上传图像的链接返回到 onPostExecute 后,我想将其复制到系统剪贴板,但 Eclipse 一直说 getSystemService(String) 未在我的 ASyncTask 类中定义。

没有合法的方法可以将链接(字符串)返回主线程,因此我必须在 UploadToImgurTask (扩展了 ASyncTask)内的 onPostExecute 中执行我必须执行的操作

    @Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
    ClipData clip = ClipData.newPlainText("label", "Text to copy");
    clipboard.setPrimaryClip(clip);
}

是什么导致了这个问题?


从 api.imgur.com 文档中,我强调的是:

API 要求每个客户端使用 OAuth 2 身份验证。这意味着 您必须注册您的应用程序并生成 access_code 如果您想以用户身份登录。

对于公共只读和匿名资源,例如获取图片信息、查找用户评论等,您只需发送一个 请求中包含您的 client_id 的授权标头。这也是 如果您想匿名上传图像(没有图像),则可以使用 被绑定到一个帐户),或者如果您想创建一个匿名 专辑。这让我们知道哪个应用程序正在访问 API。

授权:客户端 ID YOUR_CLIENT_ID

很明显,您需要在请求中添加授权标头才能使其正常工作。使用 Apache HttpClient 就这么简单:

httpPost.setHeader("Authorization", yourClientId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匿名上传文件对象到 Imgur API (JSON) 会出现身份验证错误 401 的相关文章

随机推荐

  • Flutter Image.network 未更新

    我在有状态小部件中使用 Image network 更新图像时遇到了问题 当更改设置状态内的 url 时它不会更新 但当我进行热重新加载时 图像会更新 有人知道为什么会发生吗 如果 URL 与之前相同 请尝试向 URL 添加一些随机查询字符
  • 基本矩阵的旋转和平移不正确

    我目前有一个立体相机设置 我已经校准了两个相机并拥有两个相机的内在矩阵K1 and K2 K1 2297 311 0 319 498 0 2297 313 239 499 0 0 1 K2 2297 304 0 319 508 0 2297
  • 无法在 Express js 节点中获取请求负载

    这是我的节点快速代码 function use strict var fs require fs var cors require cors var bodyParser require body parser var express re
  • C++:从指向类的指针访问成员结构的语法

    我正在尝试访问成员结构变量 但我似乎无法获得正确的语法 两个编译错误pr 访问权限是 错误 C2274 函数式转换 的右侧非法操作员 错误 C2228 otherdata 的左侧必须具有类 结构 联合 我尝试过各种改变 但没有成功 incl
  • 替换 PHP 包含文件中的字符串

    假设我有一个包含文件 foo php 它包含文本 此文件是 foo 所以 当我使用加载包含时 我希望能够在显示包含的文本之前替换包含中的字符串 假设我想用 cool 替换包含中的 foo 合理 你可以使用这个
  • 如何在javascript中转义xml实体?

    在JavaScript 服务器端nodejs 中 我正在编写一个生成xml作为输出的程序 我通过连接字符串来构建 xml str lt key gt str value str 问题是 如果value包含类似字符 gt or lt 逃离这些
  • 使用php上传1GB文件

    我正在尝试使用 php 脚本上传 1GB 大小的文件 如果文件大小小于 20MB 它可以完美工作 但是当我增加文件大小而不是按网站上的上传按钮后 它会上传文件 我猜因为它需要几分钟 之后 我的 firefox 要求我下载 upload ph
  • MVVM Light 5.0:如何使用导航服务

    In MVVM Light note最新发布 已经表明MVVM Light现在提供 导航服务 但我自己和我的朋友google都找不到如何使用它 我可以看到我可以问INavigationService到 ServiceLocator 所以我知
  • 加载 JNI 库的应用程序对象上的 Robolectric 坦克。我可以获得解决方法吗?

    The Application我的 Android 应用程序的对象加载了 JNI 库 而 Robolectric 似乎不喜欢这样 当我去运行我的测试 Robolectric 时 我得到了这个堆栈跟踪 java lang Unsatisfie
  • 在终端中移动 usr/bin/java

    更新到 OS X 10 11 后 我的 java 停止工作 我读到了很多我应该做的地方 sudo mv usr bin java usr bin java old sudo ln ns Library Internet Plug Ins J
  • 在编译时获取变量名称的标准方法

    C 11 或更高版本中是否有某种方法可以实现类似的行为 int some int std string x variable name
  • 如何将 SQLite 导出为 JSON?

    有什么方法可以获取 JSON 文件的 SQLite 视图吗 Thanks 在最新版本的 SQLite 上 这是内置的 以下内容 sqlite3 gt mode json sqlite3 gt once out json sqlite3 gt
  • 在PowerShell V2.0中计算SHA1哈希算法

    是否可以在 PowerShell V2 0 中计算 SHA 1 哈希值 我在网上能找到的唯一信息是PowerShell V4 0 我不记得在 PowerShell V2 时代是否通常也安装了 NET 3 5 我认为是这样的 您可以随时尝试以
  • 当 VelocityContext 中找不到值时,Velocity 可以为变量设置默认值吗?

    如果在 VelocityContext 中找不到值 Velocity 只会打印标签名称 即我的模板文件中的 name 但 VelocityContext 中没有 name 的值 因此只打印 name 我希望 Velocity 在变量没有值的
  • 滚动时 wpf datagrid 单元格样式出现问题

    我为我的 wpf 数据网格 红色边框画笔 创建了一个新的 DataGridCell 样式 当我垂直向下滚动时 所选单元格消失 这是可以的 当我向上滚动时 我看到选定的单元格 但其中很少有缺少样式的单元格 并且它出现在错误的单元格中 看起来数
  • 带有 ImageView 和 TextView 的 SimpleCursorAdapter

    你能有一个布局吗imageview and textview对于 a 中的一行SimpleCursorAdapter与列表视图 这将是布局
  • 编程语言中的堆栈性能

    只是为了好玩 我尝试比较几种使用朴素递归算法计算斐波那契数列的编程语言的堆栈性能 所有语言的代码基本上都是相同的 我将发布一个java版本 public class Fib public static int fib int n if n
  • 批量复制回滚

    我有一个应用程序 可以通过 C 中的批量复制类从我的数据库中进行复制 发生异常时可以回滚sql server中的批量复制操作吗 MSDN 文章 在事务中执行批量复制操作或较新的文档 事务和批量复制操作 微软文档 using SqlTrans
  • 如何将 Kubernetes 与 Gitlab 集成

    我正在尝试将 Kubernetes 集群与 Gitlab 集成 以使用 Gitlab Review Apps 功能 Kubernetes集群是通过Rancher 1 6创建的 运行kubectl get all从 kubernetes sh
  • 匿名上传文件对象到 Imgur API (JSON) 会出现身份验证错误 401

    我创建了一个类UploadToImgurTask作为一个 AsyncTask 它采用单个文件路径参数 创建并设置 MultiPartEntity 然后使用 Apache HttpClient 上传带有所述实体的图像 来自 Imgur 的 J