无效的请求缺少授权类型

时间:2019-03-26 23:56:34

标签: android kotlin oauth-2.0 jwt

我正在用Android对我的OAUTH2身份进行后期处理,以尝试收回我的Bearer令牌。

我正在使用Kotlin语言,并且正在与Volley一起进行发帖请求。

问题在于,当我使用Postman进行邮寄请求时,它的工作非常完美,但是当我使用Volley邮递以相同方式进行邮寄时,我的API REST大喊:无效的请求异常,缺少授权类型。

我的Android大喊:http://192.168.1.254:8081/oauth/token的意外响应代码400

Android通话:

private fun loginUser() {

        var grant_type = "password"
        var username = etUsername.text.toString()
        var password = etPassword.text.toString()

        val credentials = "angularapp"+":"+"12345"

        // Post parameters
        // Form fields and values
        val params = HashMap<String,String>()
        params["grant_type"] = grant_type
        params["username"] = username
        params["password"] = password

        val jsonObject = JSONObject(params)


        val request = CustomJsonObjectRequestBasicAuth(Request.Method.POST, Network.API_URL_LOGIN,jsonObject,
            Response.Listener{ response->
                Log.d("RESPONSEEEE", response.toString())
                try {
                    // Parse the json object here
                   Log.d("Response" ,response.toString())
                    val intent = Intent(this, PatientsActivity::class.java)
                    intent.putExtra(Tags.FLOOR.toString(), ((spiFloor?.selectedItemId!!+1)))
                    startActivity(intent)
                }catch (e:Exception){
                    e.printStackTrace()

                }
            }, Response.ErrorListener{
                Log.d("ERROR", "VOLLEY ERROR")
            },credentials
        )

        // Add the volley request to request queue
        VolleySingleton.getInstance(this).addToRequestQueue(request)

    }

    // Class to make a volley json object request with basic authentication
    class CustomJsonObjectRequestBasicAuth(
        method:Int, url: String,
        jsonObject: JSONObject?,
        listener: Response.Listener<JSONObject>,
        errorListener: Response.ErrorListener,
        credentials:String
    )
        : JsonObjectRequest(method,url, jsonObject, listener, errorListener) {

        private var mCredentials:String = credentials

        @Throws(AuthFailureError::class)
        override fun getHeaders(): Map<String, String> {
            val headers = HashMap<String, String>()
            headers["Content-Type"] = "application/x-www-form-urlencoded"
            val auth = "Basic " + Base64.encodeToString(mCredentials.toByteArray(), Base64.NO_WRAP)
            headers["Authorization"] = auth
            System.out.println(headers.toString())
            return headers
        }
    }

0 个答案:

没有答案