2017-07-30 2 views
0

J'essaie d'utiliser l'API Facebook pour permettre aux utilisateurs de se connecter à mon application, l'opération de connexion se termine avec succès et je reçois le jeton d'accès, mais quand j'utilise GraphRequest pour obtenir l'information de l'utilisateur c'est la réponse et l'objet renvoie null, je suis complètement novice dans le développement android. Voici mon code:Android Facebook sdk GraphRequest renvoie null lorsque j'obtiens des informations utilisateur

public class SignIn extends Fragment { 

     private LoginButton loginButton; 
     private CallbackManager callbackManager; 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) 
     { 
      View v = inflater.inflate(R.layout.fragment_sign_in, container, false); 
      Button button = (Button) v.findViewById(R.id.button_signin); 
      button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Intent i = new Intent(getActivity(),Home.class); 
        startActivity(i); 
        getActivity().finish(); 
       } 
      }); 

      callbackManager = CallbackManager.Factory.create(); 
      loginButton = (LoginButton) v.findViewById(R.id.facebook_button); 
      loginButton.setReadPermissions("email"); 
      loginButton.setFragment(this); 
      loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 
        GraphRequest request = GraphRequest.newMeRequest(
          AccessToken.getCurrentAccessToken(), 
          new GraphRequest.GraphJSONObjectCallback() { 
           @Override 
           public void onCompleted(JSONObject object, GraphResponse response) { 
=         try { 
             Log.d("id",object.getString("id")) ; 
             Log.d("email",object.getString("email")) ; 

            } catch (JSONException e) { 
             e.printStackTrace(); 
             Toast.makeText(getActivity().getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); 
            } 
           } 
          }); 
        Bundle parameters = new Bundle(); 
        parameters.putString("fields", "id,name,link"); 
        request.setParameters(parameters); 
        request.executeAsync(); 
       } 

       @Override 
       public void onCancel() { 
       } 

       @Override 
       public void onError(FacebookException exception) { 
       } 
      }); 
      return v ; 
     } 

     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 
      callbackManager.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

build.gradle (projet) (si nécessaire)

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

Répondre

1

i figured it out j'ai oublié d'ajouter ce dans le manifeste:

<activity android:name="com.facebook.FacebookActivity" 
    android:configChanges= 
     "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
    android:label="@string/app_name" />