You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求GitHub API时遭遇401错误,如何解决该问题?

解决调用用户信息接口返回401未授权的问题

以下是针对你遇到的401错误的排查和解决步骤:

1. 检查Authorization请求头格式(最常见原因)

绝大多数API要求Authorization头的格式为 Bearer <你的access token>,你的代码中直接传递了原始token,缺少Bearer 前缀。

修改方法:

在调用getUserData时,给token添加前缀:

override fun callGetUserData(token: String) {
    Log.e("MainPresenter", "1")
    if (view.isNetworkAvailable()) {
        Log.e("MainPresenter", "2")
        view.showLoading()
        // 添加Bearer前缀
        val authToken = "Bearer $token"
        disposable = repository
            .getUserData(authToken)
            .applyIoScheduler()
            .subscribe { response ->
                Log.e("MainPresenter", "3")
                Log.e("MainPresenter", "${response.code()}")
                view.hideLoading()
                when (response.code()) {
                    in 200..202 ->
                        response.body()?.let { itBody ->
                            Log.e("LoginPresenter", "itBody : $itBody")
                            view.loadGetUserData(itBody)
                        }
                    // 新增401日志,方便调试
                    401 -> Log.e("MainPresenter", "Token无效或格式错误")
                }

            }
    }
}

同时建议将Api Service中的请求头字段改为首字母大写(HTTP头不区分大小写,但部分服务可能严格校验):

@Headers("Accept: application/json")
@GET("user")
fun getUserData(
    @Header("Authorization") token: String
): Single<Response<UserResponse>>

2. 验证token本身的有效性

  • 用JWT离线解析工具查看token的exp字段,确认token是否已过期。
  • 检查获取token的流程:是否请求了正确的权限范围(scope)、是否误用了refresh token(refresh token仅用于刷新access token,无法直接调用业务接口)。
  • 用Postman模拟请求:将获取到的token加上Bearer 前缀调用/user接口,如果Postman也返回401,说明token本身无效,需要重新检查token获取逻辑。

3. 排查token传递过程中的问题

在调用getUserData前打印完整的Authorization头内容,确认token没有被截断或篡改:

Log.e("MainPresenter", "传递的Authorization头: $authToken")

4. 确认API环境一致性

检查获取token的接口和调用用户信息的接口是否使用相同的环境(测试/生产),跨环境的token通常无法通用。

内容的提问来源于stack exchange,提问作者Rey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:45:28