在新浪微博授权后调用获取用户信息的接口时候会报以下错误(用户不存在):
错误原文:
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作为字符串进行调用接口!