在新浪微博授权后调用获取用户信息的接口时候会报以下错误(用户不存在):
com.weibo.sdk.android.WeiboException: {"error":"User does not exists!","error_code":20003,"request":"/2/users/show.json"}
如果你查看新浪源码的就会发现,其实这个错误是一个很幼稚的问题,为什么这么说呢,我们先看下源码:
[java] /**
* 根据用户ID获取用户信息
*
* @param uid
* 需要查询的用户ID。
* @param listener
*/
public void show(long uid, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("uid", uid);
request(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET,
listener);
}
/**
* 根据用户ID获取用户信息
*
* @param screen_name
* 需要查询的用户昵称。
* @param listener
*/
public void show(String screen_name, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("screen_name", screen_name);
request(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET,
listener);
}
/**
* 根据用户ID获取用户信息
*
* @param uid
* 需要查询的用户ID。
* @param listener
*/
public void show(long uid, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("uid", uid);
request(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET,
listener);
}
/**
* 根据用户ID获取用户信息
*
* @param screen_name
* 需要查询的用户昵称。
* @param listener
*/
public void show(String screen_name, RequestListener listener) {
WeiboParameters params = new WeiboParameters();
params.add("screen_name", screen_name);
request(SERVER_URL_PRIX + "/show.json", params, HTTPMETHOD_GET,
listener);
}
或许看过后你就恍然大悟,如果传入的是字符串那么默认调用下面这个接口,所以会报 User does not exists!
如果传入的是long类型,那么调用的是上面那个接口,根据uid查询用户信息。
PS:切勿将uid作为字符串进行调用接口!