我使用改装库来管理与LinkedIn的REST通信。
拒绝接口
public interface LinkedInManager {
String BASE_URL = "https://api.linkedin.com/v1";
@GET("/people/~")
Profile getUserInfo();
@GET("/people/id={id}")
void getUserInfo(@Path("id") String id, Callback<Profile> cb);
}
我尝试获取用户信息
RestAdapter.Builder builder = new RestAdapter.Builder();
builder
.setEndpoint(LinkedIn.BASE_URL)
.setConverter(new GsonConverter(new Gson())).setClient(new OkClient(new OkHttpClient()));
final String accessToken = getIntent().getExtras().getString(PACKAGE_NAME + ".accessToken");
if (accessToken != null) {
builder.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestInterceptor.RequestFacade request) {
request.addQueryParam("oauth2_access_token", accessToken);
request.addQueryParam("format", "json");
}
});
}
builder.setLogLevel(RestAdapter.LogLevel.FULL);
RestAdapter restAdapter = builder.build();
final LinkedIn linkedIn = restAdapter.create(LinkedIn.class);
linkedIn.getUserInfo("cQEjnKL6pD",callback);
当我发送请求时,我会收到
{
"errorCode": 0,
"message": "Invalid member id {cQEjnKL6pD}",
"requestId": "MYEIGI80KX",
"status": 404,
"timestamp": 1426989602678
}
但当我在LinkedIn API控制台中检查这个方法时,一切都很好。
来自我的应用程序的请求:
https://api.linkedin.com/v1/people/id=cQEjnKL6pD?oauth2_access_token=AQUjGuS8emH9DaZAkRtTtD8LgLnyApDoRhEc_8czX_8zRGngjiBahKBS15Y2rTCyL4rJHQMe7NYDZTECph59PCVCzaKSvosKevKqVyQwsXmMtEH-Abf3GyqPiNAfSswzvRU_nCW5ToEY-DgGiNif4V-JEyh99JuxNPPAIehE8Vi47oJOyl0&format=json
控制台请求:
https://api.linkedin.com/v1/people/id=cQEjnKL6pD?oauth2_access_token=AQVZh_28bwO32ja2s3Kn0AzqYh3LyM_xqpTMXMshYawAvgjSYhl0GRDtxOjnFTscxqLtVMzxHl8J6EFJagwq1rUAR1_GCtZvMLxxkPOoBlpkj04T43aphfUDy85a6gyDTjxxZjBtKsCtasd95aEwoAm8M0PFfxAjYxWvoIOW1i3xDDDfYKo&format=json
两者给了我不同的结果。第一个-"无效的成员id",第二个-工作正常。有人能解释一下出了什么问题吗?
用于将来的搜索。
根据LinkedIn API文档:
id成员的唯一标识值。
此值链接到您的特定应用程序任何将其与其他应用程序一起使用的尝试都将导致"404-无效成员id"错误。