Problemas para get API de Meetup Token de acceso con modificación – Android

Estoy intentando implementar la authentication OAuth 2 para la API de Meetup usando la modificación. Tengo el código de Autorización pero tengo problemas para get el token de acceso. Aquí están todos los bits relevantes de código:

Mi método onResume:

override fun onResume() { super.onResume() // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent val uri = intent.data if (uri != null && uri.toString().startsWith(CALL_BACK)) { val code = uri.getQueryParameter("code") if (code != null) { // get access token // we'll do that in a minute //"authorize code: $code".show(this) Log.i("Rakshak","Code: $code") // The Authorization Code is printed val loginService = ServiceGenerator.createService(LoginService::class.java) //var request = RequestBody(CLIENT_ID,CLIENT_SECRET,"authorization_code",CALL_BACK,code) val requestBody = "client_id=$CLIENT_ID"+ "&client_secret=$CLIENT_SECRET"+ "&grant_type=authorization_code"+ "&networkingirect_uri=$CALL_BACK+" + "&code=$code" val call = loginService.getAccessToken(requestBody) //val accessToken = call.execute().body() call.enqueue(object : retrofit2.Callback<AccessToken>{ override fun onResponse(call: Call<AccessToken>?, response: Response<AccessToken>?) { Log.i("Rakshak","Response: ${response.toString()}") // Prints: "Response{protocol=h2, code=400, message=, url=https://secure.meetup.com/oauth2/access}" Log.i("Rakshak","Access token: ${response?.body()?.accessToken}")// Prints: "Access token: null" } override fun onFailure(call: Call<AccessToken>?, t: Throwable?) { Log.i("Rakshak","Didn't work. ${t?.localizedMessage}") } }) } else if (uri.getQueryParameter("error") != null) { // show an error message here "Didn't work. Code: $code".show(this) } } } 

Interfaz de service de inicio de session:

 interface LoginService { @FormUrlEncoded @POST("https://secure.meetup.com/oauth2/access") fun getAccessToken(@Field("body") requestBody: String): Call<AccessToken> 

}

Clase de class de request:

 data class RequestBody( var client_id:String, var client_secret: String, var grant_type: String, var networkingirect_uri: String, var code: String) 

Métodos relevantes de la class de generador de service:

 private val API_BASE_URL = "https://secure.meetup.com/oauth2/access/" private val httpClient = OkHttpClient.Builder() private val builder = Retrofit.Builder() .baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) private var retrofit = builder.build() fun <S> createService(serviceClass: Class<S>): S { return retrofit.create(serviceClass); } 

¿Por qué la respuesta al POST del token de acceso me da una respuesta de 400 en lugar de un JSON con un token de acceso como se describe aquí ? Qué me estoy perdiendo ?