0

我正在使用 Imgur API来获取数据,但这个 API 需要身份验证。我使用了一个改造库,并且我有 API 的客户端 ID。我很新,我不知道如何使用改造来添加身份验证。请帮我。这是一个教程,但他们没有使用改造教程

ApiClient.kt

 package com.example.imgurapi.Network

import okhttp3.*
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.io.IOException

object ApiClient {
private var BASE_URL: String = "https://api.imgur.com/3/image/"
private var apiClient2: ApiClient? = null
private var retrofit: Retrofit? = null

init {
    val clientBuilder = OkHttpClient.Builder()

    //Create a new Interceptor.

    //Create a new Interceptor.
    val headerAuthorizationInterceptor: Interceptor = object : Interceptor {
        @Throws(IOException::class)
        override fun intercept(chain: Interceptor.Chain): Response? {
            var request: Request = chain.request()
            val headers: Headers =
                request.headers().newBuilder().add("Authorization", "01016a9fff88608").build()
            request = request.newBuilder().headers(headers).build()
            return chain.proceed(request)
        }
    }

    clientBuilder.addInterceptor(headerAuthorizationInterceptor)


    retrofit = Retrofit.Builder().baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create()).build()
}

fun getInstance(): ApiClient? {
    if (apiClient2 == null) {
        apiClient2 = ApiClient
    }
    return apiClient2
}

fun getApi(): ApiInterface? {
    return retrofit?.create(ApiInterface::class.java)
}

接口接口.kt

package com.example.imgurapi.Network


import ImageData
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Path

interface ApiInterface {
    @GET("image/{id}")
    open fun imageById(@Path("id") id: String?): Call<ImageData?>?
}
4

1 回答 1

0

每个客户端都必须注册他们的应用程序并接收 client_id 和 client_secret。

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

授权:客户 ID YOUR_CLIENT_ID

欲了解更多信息:按照分步说明进行操作

https://apidocs.imgur.com/?version=latest

于 2020-05-03T03:05:41.653 回答