2016-01-31 3 views
0

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 

    ); 

} 

Répondre

0

Difficile à dire pour sûr sans laisser de trace plus de pile, mais je dirais que vous êtes ne répond pas avec JSON valide sur votre backend (http://192.168.0.111), puisque le message d'erreur que vous obtenez est quand Gson trouve quelque chose d'autre qu'un { comme premier caractère dans la réponse.

+0

Merci! Je l'ai eu.Cette erreur est à cause de mon API backend :) –