sina微博之errorcode:20003

本文解析了在使用新浪微博SDK时,因参数类型错误导致无法正确获取用户信息的问题。通过对比源码,揭示了传入字符串而非预期的UID时会触发用户不存在错误的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在新浪微博授权后调用获取用户信息的接口时候会报以下错误(用户不存在):

错误原文:

com.sina.weibo.sdk.exception.WeiboHttpException: {"error":"User does not exists!","error_code":20003,"request":"/2/users/show.json"}

一开始,我很郁闷为什么获取不到user,后来仔细看了一边原码,才发现,这错误是有多幼稚,难怪百度半天都找不到。

给大家贴上源码

/**
     * 根据用户ID获取用户信息。
     * 
     * @param uid      需要查询的用户ID
     * @param listener 异步请求回调接口
     */
    public void show(long uid, RequestListener listener) {
        WeiboParameters params = new WeiboParameters(mAppKey);
        params.put("uid", uid);
        requestAsync(sAPIList.get(READ_USER), params, HTTPMETHOD_GET, listener);
    }
    
    /**
     * 根据用户昵称获取用户信息。
     * 
     * @param screen_name 需要查询的用户昵称
     * @param listener    异步请求回调接口
     */
    public void show(String screen_name, RequestListener listener) {
        WeiboParameters params = new WeiboParameters(mAppKey);
        params.put("screen_name", screen_name);
        requestAsync(sAPIList.get(READ_USER), params, HTTPMETHOD_GET, listener);
    }
这里获取用户信息有两种,前者是uid,后者是screen_name。

sina sdk代码中是这样获取的

//就会去触发用户信息访问的接口
                mUsersAPI.show(mAccessToken.getUid(), mListener);
一比较,就很容易知道缘由
或许看过后你就恍然大悟,如果传入的是字符串那么默认调用下面这个接口,所以会报  User does not exists!

如果传入的是long类型,那么调用的是上面那个接口,根据uid查询用户信息。


PS:切勿将uid作为字符串进行调用接口!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值