Neu zum Nachrüsten und versuchen, Instagram-API mit Retrofit zu verbrauchen. Unten ist das Setup. Zuerst habe ich die Schnittstelle zu definieren, um mit dem Instagram-API zu kommunizierenRetrofit + Instagram-API gibt Fehler 400 zurück, wenn Sie Zugriffstoken anfordern
public interface API {
@POST("oauth/access_token")
Call<AccessToken> getAccessToken(@Body TokenRequest tokenRequest);
}
Unten ist mein Implementierung
public class APIPresenter implements Callback<List<APIResponse>> {
static final String BASE_URL = "https://api.instagram.com/";
public void startI(String code){
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
API r = retrofit.create(API.class);
Call<AccessToken> call = r.getAccessToken(new TokenRequest("CLIENT_ID", "CLIENT_SECRET", "authorization_code", "redirecturi", code));
call.enqueue(new Callback<AccessToken>() {
@Override
public void onResponse(Call<AccessToken> call, Response<AccessToken> response) {
// Log.i("WORKING", response.body().access_token + " " + response.body().user.getUsername());
Log.i("WORKING", String.valueOf(response.code()));
}
@Override
public void onFailure(Call<AccessToken> call, Throwable t) {
t.printStackTrace();
}
});
}
TokenRequest
public class TokenRequest {
private String client_id;
private String client_secret;
private String grant_type;
private String redirect_uri;
private String code;
public TokenRequest(String client_id, String client_secret, String grant_type, String redirect_uri, String code) {
this.client_id = client_id;
this.client_secret = client_secret;
this.grant_type = grant_type;
this.redirect_uri = redirect_uri;
this.code = code;
}
}
AccessToken Modell
public class AccessToken {
@SerializedName("access_token")
@Expose
public String access_token;
@SerializedName("user")
@Expose
public User user;
}
Problem ist, dass, wenn ich versuche, den Inhalt der Antwort in der onResponse-Methode auszugeben, bekomme ich eine Null. Ich bin mir nicht sicher, was ich falsch mache
aktualisieren Ich erhalte die folgende Fehlermeldung
{ "Code": 400, "error_type": "OAuthException", „error_message ":" Sie müssen eine client_id angeben "}
Danke, aber diese Lösung wird nicht mit meinem Projekt arbeiten, da es auf Retrofit 1.6.1 gebaut wurde. Ich habe das Problem jedoch behoben, Sie können meine Antwort überprüfen. –