Facebook Android SDK 4.5.0 get email address

后端 未结 7 1530
[愿得一人]
[愿得一人] 2020-12-04 16:02

I\'m currently creating a test application to test using the latest facebook SDK to update our existing application problem is that I need to get the email address which I k

7条回答
  •  被撕碎了的回忆
    2020-12-04 16:10

    You need to ask for parameters to facebook in order to get your data. Here I post my function where I get the facebook data. The key is in this line:

    parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); // Parámetros que pedimos a facebook
    

    Hope it helps you.

    btnLoginFb.registerCallback(callbackManager, new FacebookCallback() {
    
            @Override
            public void onSuccess(LoginResult loginResult) {
    
                System.out.println("onSuccess");
                progressDialog = new ProgressDialog(LoginActivity.this);
                progressDialog.setMessage("Procesando datos...");
                progressDialog.show();
                String accessToken = loginResult.getAccessToken().getToken();
                Log.i("accessToken", accessToken);
    
                GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
    
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        Log.i("LoginActivity", response.toString());
                        // Get facebook data from login
                        Bundle bFacebookData = getFacebookData(object); 
                    }
                });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id, first_name, last_name, email,gender, birthday, location"); // Parámetros que pedimos a facebook
                request.setParameters(parameters);
                request.executeAsync();
            }
    
            @Override
            public void onCancel() {
                System.out.println("onCancel");
            }
    
            @Override
            public void onError(FacebookException exception) {
                System.out.println("onError");
                Log.v("LoginActivity", exception.getCause().toString());
            }
        });
    
    
    
    private Bundle getFacebookData(JSONObject object) {
    
            try {
                Bundle bundle = new Bundle();
                String id = object.getString("id");
    
                try {
                    URL profile_pic = new URL("https://graph.facebook.com/" + id + "/picture?width=200&height=150");
                    Log.i("profile_pic", profile_pic + "");
                    bundle.putString("profile_pic", profile_pic.toString());
    
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                    return null;
                }
    
                bundle.putString("idFacebook", id);
                if (object.has("first_name"))
                    bundle.putString("first_name", object.getString("first_name"));
                if (object.has("last_name"))
                    bundle.putString("last_name", object.getString("last_name"));
                if (object.has("email"))
                    bundle.putString("email", object.getString("email"));
                if (object.has("gender"))
                    bundle.putString("gender", object.getString("gender"));
                if (object.has("birthday"))
                    bundle.putString("birthday", object.getString("birthday"));
                if (object.has("location"))
                    bundle.putString("location", object.getJSONObject("location").getString("name"));
    
                return bundle;
            }
          catch(JSONException e) {
            Log.d(TAG,"Error parsing JSON");
          }
        return null;
    }
    

提交回复
热议问题