缺少api密钥android Cloudinary上传错误

Posted

技术标签:

【中文标题】缺少api密钥android Cloudinary上传错误【英文标题】:Missing api key android Cloudinary upload error 【发布时间】:2020-01-14 03:58:54 【问题描述】:

androidManifest.xml

 <meta-data
        android:name="CLOUDINARY_URL"
        android:value="$cloudinaryUrl" />

在我上传文件的活动中,我初始化了 MediaManager

MediaManager.init(this);

我已经使用它的 uri 上传了文件:

val requestId = MediaManager.get().upload(uri).callback(object : UploadCallback 
    override fun onStart(requestId: String) 
        // your code here
    

    override fun onProgress(requestId: String, bytes: Long, totalBytes: Long) 
        // example code starts here
        val progress = bytes.toDouble() / totalBytes
        // post progress to app UI (e.g. progress bar, notification)
        // example code ends here
    

    override fun onSuccess(requestId: String, resultData: Map<*, *>) 
        // your code here
    

    override fun onError(requestId: String, error: ErrorInfo) 
        // your code here
    

    override fun onReschedule(requestId: String, error: ErrorInfo) 
        // your code here
    
).dispatch()

问题是我收到错误'Missing api key'。未签名的上传是否需要 api 密钥?

【问题讨论】:

是的,您的实施需要 CLOUDINARY_URL @sohel.eco 我已将 CLOUDINARY_URL 添加到清单元数据中。错误说明缺少 api_key。 你能在这里给出你的确切错误吗? "必须提供 api_key" - 完整的错误描述 【参考方案1】:

通过查看文档中的here。在示例中您需要传递SignatureProvider

示例代码:

Map config = new HashMap();
config.put("cloud_name", "myCloudName");
MediaManager.init(this, new SignatureProvider()
  @Override
  public Signature provideSignature(Map options) 
    // replace the following with a function that calls your backend signature generation endpoint
    SignResult res = signUpload(options);  // example name of a function that implements a synchronous HTTPS call
    return new Signature(res.getSignature(), res.getApiKey(), res.getTimestamp());
  
  @Override
  public String getName() 
    return "SampleSignatureProvider"; // for logging purposes
  
, config);

要启用签名上传,您需要将调用更新为 MediaManager 的 init 方法,带有您的类实例的名称 (初始化(上下文,签名提供者,地图))。你的课将是 每当必须签署上传文件时实施。

查看SignatureProvider 接口

编辑

对于未签名的上传,您没有提到 .unsigned("sample_preset")MediaManager.get().upload(uri)。欲了解更多信息see here

【讨论】:

这是用于签名上传,但我正在尝试未签名上传.. 不应该要求未签名上传的 api 密钥? @ghita 我已经修改了我的答案。请检查

以上是关于缺少api密钥android Cloudinary上传错误的主要内容,如果未能解决你的问题,请参考以下文章

我如何使用签名签名上传到 cloudinary

Cloudinary\Error:缺少必需的参数 - 文件

Cloudinary 错误:“错误”:“消息”:“缺少必需的参数 - 时间戳”

缺少有效的 YouTube API 密钥

Cloudinary\Error:缺少必需的参数 - 文件 - Express 和 Postman

Google Cloud Translation API 请求缺少有效的 API 密钥