当我尝试通过改造获得带有客户ID的令牌,客户秘密密钥和授权代码时。我收到 401未经授权的错误
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>
}
我该如何解决? 我花很多时间弄清楚...
谢谢
答案 0 :(得分:0)
改造不是问题,服务器将返回其响应401 表示呼叫已成功,但可能存在“凭据”问题或“特权”不足的问题,请使用 POSTMAN 来测试响应是否成功,然后实施。
希望有帮助。
答案 1 :(得分:0)
一般来说,将Open Id Connect集成到移动应用程序并不容易。有许多与可用性和可靠性有关的棘手方面。我认为您应该寻找以下品质:
如果有帮助,我这里有一些资源可以帮助您进行比较,并且可以运行代码示例。也许您可以针对此类解决方案改编Retrofit?