Dropbox V2 выдает "SHARED_LINK_NOT_FOUND" при попытке получить URL-адрес общей ссылки

При выборе файлов из выпадающего списка (V2) я пытаюсь получить URL-адрес общей ссылки, используя приведенный ниже код.

  internal inner class GetDropboxSharableURLTask(file_path: String, pathLower: String) : AsyncTask<String, Void, Void>() {
    private var pDialog: ProgressDialog? = null
    private var dropbox_url: String? = file_path
    private var db_pathLower: String? = pathLower



    override fun onPreExecute() {
        super.onPreExecute()

        pDialog = ProgressDialog(context)
        pDialog!!.setCancelable(false)
        pDialog!!.setMessage(context?.resources?.getString(R.string.please_wait))
        pDialog!!.show()
    }

    override fun doInBackground(vararg urls: String): Void? {
        try {

            val shareLink =   DropboxClientFactory.getClient().sharing().getSharedLinkMetadata(db_pathLower)
            dropbox_url = getShareURL(shareLink.url)!!.replaceFirst("https://www".toRegex(), "https://dl")

            return null
        } catch (e: Exception) {
            e.printStackTrace()

            return null
        }

    }


    fun getShareURL(strURL: String?): String? {
        var conn: URLConnection? = null
        var redirectedUrl: String? = null
        try {

            val inputURL = URL(strURL)
            conn = inputURL.openConnection()
            conn!!.connect()

            val `is` = conn.getInputStream()
            println("Redirected URL: " + conn.url)
            redirectedUrl = conn.url.toString()
            `is`.close()

        } catch (e: MalformedURLException) {
            Log.d("", "Please input a valid URL")
        } catch (ioe: IOException) {
            Log.d("", "Can not connect to the URL")
        }

        return redirectedUrl
    }

    override fun onPostExecute(feed: Void?) {
        // TODO: check this.exception
        // TODO: do something with the feed


        pDialog!!.hide()
        Log.d("url", dropbox_url)
        val intent = Intent()

        intent.putExtra(Constant.KEY_DROPBOX_PICKER, dropbox_url)

        context?.setResult(Activity.RESULT_OK, intent)

        context?.finish()

    }
}

Я получаю ошибку, как показано ниже -

com.dropbox.core.v2.sharing.SharedLinkErrorException: исключение в 2/shared /get_shared_link_metadata: SHARED_LINK_NOT_FOUND

Эта ошибка выдается при вызове getSharedLinkMetadata(db_pathLower)

Хотя раньше я использовал подобный код в dropbox V1, но как только я перешел на более новую версию Dropbox API, т.е. dropbox V2Я начал получать эту ошибку, пытаясь получить фактический URL-адрес общего доступа dropbox (тот, который также должен содержать расширение файла).

Ожидаемый URL должен быть таким - https://dl.dropbox.com/s/hpe1gjfb4aqsv3e/property_1523965639_img.jpeg?dl=0

но то, что я получаю, это что-то вроде https://dl.dropboxusercontent.com/apitl/1/AAD62_lYN5n_cYyRQWhg_rmXGJPFzqF5m8OJp‌​Nt_SIIxG7bVvmO6X5d1pKg7uulM1vEBWx_X9PZ9i3vFy-jb3eBC-M_q3YCWRmPrdAwpQ7kqSFGCIPrZaH‌​NC44YRjwXGXYTbnqMO1hPhKb-G5matDzTABUQOssB-LIN4qWoJmPnuhNgzpL9FO4ibet4uBPoef_SLZLj‌​upsOV9PKYUhtPxY_NY7HjymZSHsQh67m4HoBN4YgEAPot0KMAsV1eE3WCjK0XbD1YfGqdsVI9H40KUQ_9‌​R-nmAouoqdbA37G5CXjQKYPC8cENTvN2pjHKwCnHvgI только из-за этой ошибки.

Пожалуйста, дайте мне знать, что мне нужно изменить, чтобы получить URL-адрес общего доступа к Dropbox (вместе с расширением файла), и чтобы избежать вышеуказанной ошибки, как только файл будет выбран / нажат.

1 ответ

Наконец, решено с помощью этого, как listSharedLinksBuilder наконец-то сработало для меня.

Это было решено путем изменения кода на -

      val sharedLinksResults = DropboxClientFactory.getClient().sharing().listSharedLinksBuilder().withPath(db_pathLower).withDirectOnly(true).start()
        var url = ""
        if (sharedLinksResults.links.isEmpty()) {
            val shareLink = DropboxClientFactory.getClient().sharing().createSharedLinkWithSettings(db_pathLower) //.getClient().sharing().getSharedLinkMetadata(db_pathLower)
            url = shareLink.url

        } else {
            url = sharedLinksResults.links[0].url


        }
        dropbox_url = getShareURL(url)!!.replaceFirst("https://www".toRegex(), "https://dl")
Другие вопросы по тегам