我正在为我的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()) {
}
);
请帮助我提取用户名和个人资料图片的信息。谢谢你
答案 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;
}
希望这有帮助