首页 > 解决方案 > 无效请求缺少授权类型

问题描述

我正在使用 Android 对我的 OAUTH2 身份验证进行后调用,试图获取我的承载令牌。

我正在使用 Kotlin 语言,并且正在使用 Volley 进行发布请求。

问题是,当我使用 Postman 发出我的 post 请求时,它工作得非常完美,但是当我使用 Volley post 以同样的方式发出请求时,我的 API REST 大喊:无效的请求异常,缺少授权类型。

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

安卓通话:

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

标签: androidkotlinoauth-2.0jwt

解决方案


推荐阅读