J'utilise maintenant retrofit, OkHttp et facebook sdk pour faire l'inscription de facebook. Mais j'ai des problèmes dans ma méthode de registre "Fail :: java.lang.IllegalStateException: Attendu BEGIN_OBJECT mais était STRING à la ligne 1 colonne 1 chemin $ ".Pourriez-vous regarder s'il vous plaît? Voici mon code.C'est un événement Facebook resigter.Je ne peux pas demander au serveur pour l'enregistrement de facebook en utilisant la rétrofit okHttp
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
try {
user_id = response.getJSONObject().get("id") + "";
Log.i("User id", user_id);
register(user_id);
setProfile();
} catch (JSONException e) {
e.printStackTrace();
}
try {
response.getJSONObject().get("id");
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
Ceci est ma méthode d'enregistrement.
public void register(String id){
String pic_link="https://graph.facebook.com/" + id + "/picture?type=large";
Call<HashMap<String,String>> register= Login_api.createService(Login_service.class).register(id,pic_link);
register.enqueue(new Callback<HashMap<String, String>>() {
@Override
public void onResponse(Response<HashMap<String, String>> response, Retrofit retrofit) {
Log.i("SUCCESS:","MOTHER FUCKER");
}
@Override
public void onFailure(Throwable t) {
Log.i("Fail:",t.getMessage());
}
});
}
C'est ma classe api
public class Login_api {
private static Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl("http://192.168.0.111")
.addConverterFactory(GsonConverterFactory.create())
.client(new MyOkHttp());
public Login_api(){
}
public static <S> S createService(Class<S> serviceClass) {
Retrofit retrofit = builder.build();
return retrofit.create(serviceClass);
}
}
Et ceci est mon interface de service
public interface Login_service {
@FormUrlEncoded
@POST("androidapi/public/post/store")
Call<HashMap<String,String>> register(
@Field("user_name") String user_name,
@Field("profile_pic") String profile_pic
);
}
Merci! Je l'ai eu.Cette erreur est à cause de mon API backend :) –