ParseFaceBookUtil使用android不提供用户信息

时间:2016-04-20 10:05:09

标签: android facebook parse-platform username

我正在为我的Android应用程序使用ParseFacebook SDK。我已经使用过网站上的解析sdk代码,下面给出了一些代码片段,它已成功登录facebook,但我无法提取我的Facebook信息,如:MyProfileImage,Username等。

在应用程序类中:

ParseFacebookUtils.initialize(this);

在我使用Facebook登录的班级中:

ParseFacebookUtils.logInWithReadPermissionsInBackground(SignInActivity.this, Arrays.asList("email", "user_photos", "public_profile", "user_friends"), new LogInCallback() {
                    @Override
                    public void done(ParseUser user, com.parse.ParseException e) {
                        if (user == null) {
                            Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
                        } else if (user.isNew()) {
                           }
);

请帮助我提取用户名和个人资料图片的信息。谢谢你

1 个答案:

答案 0 :(得分:0)

这对我有用

public static void FaceBookLogin(final Activity context){
     ArrayList permissions=new ArrayList<String>();
    //permissions.add("publish_stream");
    permissions.add("user_likes");
    permissions.add("email");
    permissions.add("user_birthday");
    ParseFacebookUtils.logInWithReadPermissionsInBackground(context, permissions, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException err) {
            if (user == null) {
                Toast.makeText(context,"You have cancelled to connect via facebook",Toast.LENGTH_SHORT);
                Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
            } else if (user.isNew()) {
                Toast.makeText(context,"You have successfully connected via facebook",Toast.LENGTH_SHORT);
                Log.d("MyApp", "User signed up and logged in through Facebook!");
                try {
                    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject json, GraphResponse response) {
                            // Application code
                            if (response.getError() != null) {
                                System.out.println("ERROR");
                            } else {
                                System.out.println("Success");
                                String jsonresult = String.valueOf(json);
                                System.out.println("JSON Result" + jsonresult);

                                String fbUserId = json.optString("id");
                                String fbUserFirstName = json.optString("name");
                                String fbUserEmail = json.optString("email");
                                String fbUserProfilePics = "http://graph.facebook.com/" + fbUserId + "/picture?type=large";
                                ParseUser.getCurrentUser().setEmail(fbUserEmail);
                                ParseUser.getCurrentUser().put("First_Name",fbUserFirstName);
                                ParseUser.getCurrentUser().put("FaceBookUrl",fbUserProfilePics);
                                ParseUser.getCurrentUser().saveInBackground();
                            }
                            Log.v("FaceBook Response :", response.toString());
                        }
                    });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "id,name,email,gender, birthday");
                    request.setParameters(parameters);
                    request.executeAsync();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(context,e.getMessage(),Toast.LENGTH_SHORT);
                }

                if (ParseUser.getCurrentUser().getBoolean("IsTermsAccepted")==true){
                    Intent intent = new Intent(context, MainActivity.class);
                    context.startActivity(intent);
                }else{
                    Utils.ShowTermsofUse(context);
                }
            } else {
                Toast.makeText(context,"You have successfully connected via facebook",Toast.LENGTH_SHORT);
                Log.d("MyApp", "User logged in through Facebook!");
                try {
                    GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                        @Override
                        public void onCompleted(JSONObject json, GraphResponse response) {
                            // Application code
                            if (response.getError() != null) {
                                System.out.println("ERROR");
                            } else {
                                System.out.println("Success");
                                String jsonresult = String.valueOf(json);
                                System.out.println("JSON Result" + jsonresult);

                                String fbUserId = json.optString("id");
                                String fbUserFirstName = json.optString("name");
                                String fbUserEmail = json.optString("email");
                                String fbUserProfilePics = "http://graph.facebook.com/" + fbUserId + "/picture?type=large";
                                ParseUser.getCurrentUser().setEmail(fbUserEmail);
                                ParseUser.getCurrentUser().put("First_Name",fbUserFirstName);
                                ParseUser.getCurrentUser().put("FaceBookUrl",fbUserProfilePics);
                                ParseUser.getCurrentUser().saveInBackground();
                            }
                            Log.v("FaceBook Response :", response.toString());
                        }
                    });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "id,name,email,gender, birthday");
                    request.setParameters(parameters);
                    request.executeAsync();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(context,e.getMessage(),Toast.LENGTH_SHORT);

                }

                if (ParseUser.getCurrentUser().getBoolean("IsTermsAccepted")==true){
                    Intent intent = new Intent(context, MainActivity.class);
                    context.startActivity(intent);
                }else{
                    Utils.ShowTermsofUse(context);
                }
            }
            Toast.makeText(context,err.getMessage(),Toast.LENGTH_SHORT);
        }
    }) ;
}

别忘了打电话给onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    case FACEBOOK:
            ParseFacebookUtils.onActivityResult(FACEBOOK, resultCode, data);
            break;
    }

希望这有帮助