Как добавить аутентификацию с помощью модернизации в API? - PullRequest
0 голосов
/ 02 мая 2020

Я использую Imgur API для извлечения данных, но этот API требует аутентификации. Я использовал модифицированную библиотеку, и у меня есть идентификатор клиента для API. Я очень новичок и понятия не имею, как добавить аутентификацию с помощью модернизации. Пожалуйста, помогите мне. Вот учебник, но они не используют модернизацию Учебник .

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)
}

ApiTerface.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?>?
}

1 Ответ

0 голосов
/ 03 мая 2020

Каждый клиент должен зарегистрировать свое приложение и получить client_id и client_secret.

Для публикуемых c только для чтения и анонимных ресурсов, таких как получение информации об изображении, поиск комментариев пользователя и т. Д. c. все, что вам нужно сделать, это отправить заголовок авторизации с вашим client_id в ваших запросах. Это также работает, если вы хотите загружать изображения анонимно (без привязки изображения к учетной записи), или если вы хотите создать анонимный альбом. Это позволяет нам узнать, какое приложение обращается к API.

Авторизация: ID клиента YOUR_CLIENT_ID

Для получения дополнительной информации: выполните пошаговые инструкции в

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

...