我找不到任何关于从Linkedin api获取access_token的解决方案。这是我的代码:
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
public interface RetrofitServiceforLinkedin {
@FormUrlEncoded
@POST ("uas/oauth2/accessToken")
Call<LinkedinResponse> getDataLinkedinAccessTokenviaRest(
@Field ("code") String code);
}
LinkedinResponse.class
public class LinkedinResponse {
private DataLinkedinAccessToken data;
public DataLinkedinAccessToken getData() {
return data;
}
public void setData(DataLinkedinAccessToken data) {
this.data = data;
}
}
DataLinkedinAccessToken.class
public class DataLinkedinAccessToken {
String access_token;
String expires_in;
public String getAccess_token() {
return access_token;
}
public String getExpires_in() {
return expires_in;
}
}
在Fragment类中我基本上使用RetrofitService获取了AccessToken。
private void getLinkedinAccessToken(String authorization_code) {
Log.i("ACCESS", authorization_code);
Call<LinkedinResponse> call = RestClientLinkedin.getRetrofitService().getDataLinkedinAccessTokenviaRest(authorization_code);//
Log.i("ACCESS", authorization_code + " : NO PROBLEM");
call.enqueue(new Callback<LinkedinResponse>() {
@Override//
public void onResponse(Call<LinkedinResponse> call, Response<LinkedinResponse> response) {
Log.i("ACCESSenönce", response.body() + " : is response null?");
if (response.body() != null) { dataLinkedinAccessToken.add(response.body().getData());
Log.i("ACCESSönce", response.body().getData().toString());
access_tokenLinkedin = response.body().getData().getAccess_token();
Log.i("ACCESSson", access_tokenLinkedin);
//logtime
}
}
所以access_tokenLinkedin是空的吗?我找不到任何解决方案。
答案 0 :(得分:0)
我找到了答案。 Linkedin api通过autorization_code交换提供access_token。所以应该做的第一件事是通过使用来交换它们 UrlEncoded html POST如下。
public interface RetrofitServiceforLinkedin {
@FormUrlEncoded
@POST ("uas/oauth2/accessToken")
Call<LinkedinResponse> getDataLinkedinAccessTokenviaRest(
@Field ("grant_type") String grant_type,
@Field ("code") String code,
@Field ("redirect_uri") String redirect_uri,
@Field ("client_id") String client_id,
@Field ("client_secret") String client_secret
);
}