【问题标题】:Retrofit2 OAuth2 with Client ID and Client secret key in Android - 401 Unauthorized error在Android中使用客户端ID和客户端密钥的Retrofit2 OAuth2 - 401未经授权的错误
【发布时间】:2020-09-09 19:40:36
【问题描述】:

当我尝试在改造的帮助下获取带有客户端 ID、客户端密钥和授权码的令牌时。我收到 401 UnAuthorized 错误

MainActivity.kt

if (appLinkData != null && appLinkData.toString().startsWith("https://abc.abconline.com/plugin/callback")) {
        val code = appLinkData.getQueryParameter("code")
        //     Toast.makeText(this, code, Toast.LENGTH_SHORT).show()

        val builder = Retrofit.Builder().baseUrl("https://abc.abcOnline.com")
            .addConverterFactory(GsonConverterFactory.create()).build()
        val client = builder.create(restClient::class.java)
        client.getAccessToken(
            clientId,
            clientSecret,
            code,
            "Authorization"
        ).enqueue(object : Callback<AccessToken> {
            override fun onFailure(call: Call<AccessToken>, t: Throwable) {
                Toast.makeText(applicationContext, "Falied: $t.message", Toast.LENGTH_SHORT)
                    .show()

            }

            override fun onResponse(call: Call<AccessToken>, response: Response<AccessToken>) {
                Toast.makeText(
                    applicationContext,
                    response.body().toString(),
                    Toast.LENGTH_SHORT
                ).show()
            }

RestClient.kt

interface restClient {

@POST("/oauth2/token")
@FormUrlEncoded
fun getAccessToken(
@Field("client_id") clientId: String,
@Field("client_secret") clientSecret: String,
@Field("code") code: String,
@Field("grant_type") grantType: String,
@Field("redirect_uri") redirectUri: String
): Call<AccessToken>

}

我该如何解决? 我花了很多时间来弄清楚......

谢谢

【问题讨论】:

    标签: android kotlin oauth-2.0 retrofit2


    【解决方案1】:

    不是 Retrofit 的问题,服务器返回响应 401 表示调用成功,但“凭据”可能有问题或“权限”不足,请使用 POSTMAN 测试响应是否成功然后实施。

    看看401-unauthorized-error

    希望对你有帮助。

    【讨论】:

    • 使用 POSTMAN 一切正常。我可以生成令牌并使用它......但是当我尝试通过程序生成时,我得到了生成令牌的 401 错误
    • 你用过Volley吗?
    【解决方案2】:

    总的来说,将 Open Id Connect 集成到移动应用中并不容易。有许多与可用性和可靠性相关的棘手方面。我认为你应该寻找这些品质:

    • 能够查看 API 和 OAuth 消息
    • 使用主流且受人尊敬的安全库

    如果有帮助,我这里有一些资源可以帮助您进行比较,以及您可以运行的代码示例。也许你可以围绕这种类型的解决方案调整改造?

    【讨论】:

      猜你喜欢
      • 2018-07-07
      • 2022-11-11
      • 2021-01-07
      • 2017-11-16
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      相关资源
      最近更新 更多