我使用Facebook SDK允许用户使用Facbook登录,但我无法在成功登录后获取个人资料详细信息。
这是我的代码:
fbLoginButton = (LoginButton) findViewById(R.id.login_button);
fbLoginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile = Profile.getCurrentProfile();
id = profile.getId();
String user_fname = profile.getFirstName();
String user_lname = profile.getLastName();
user = user_fname.concat(" ");
user = user.concat(user_lname);
image = profile.getProfilePictureUri(10, 10).toString();
try {
send();
}catch (Exception ex) {
String error = ex.getMessage();
}
}
它给出了一个错误,即配置文件obj是null
答案 0 :(得分:2)
使用 GraphRequest 获取个人资料信息。
@Override
public void onSuccess(LoginResult loginResult) {
AccessToken accessToken = loginResult.getAccessToken();
GraphRequest request = GraphRequest.newMeRequest(accessToken,
new GraphRequest.GraphJSONObjectCallback() {
String email;
String firstName;
String lastName;
String gender;
String country;
String dob, name, picPath, id;
@Override
public void onCompleted(JSONObject object,
GraphResponse response) {
try {
email = object.getString("email");
name = object.getString("name");
firstName = object.getString("first_name");
lastName = object.getString("last_name");
gender = object.getString("gender");
country = object.getString("locale");
id = object.getString("id");
picPath = "http://graph.facebook.com/" + id + "/picture?type=large";
dob = object.getString("birthday");
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters
.putString("fields",
"name,email,address,first_name,last_name,gender,location,birthday,locale");
request.setParameters(parameters);
request.executeAsync();
}
答案 1 :(得分:0)
检查以下代码并尝试实现此功能,以便在登录时从Facebook检索信息。另外,不要忘记添加所需信息的权限。
private Session.StatusCallback statusCallback = new Session.StatusCallback() {
@Override
public void call(final Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Request mRequest = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser graphUser, Response response) {
if (response.getError() == null) {
String id= graphUser.getId()));
String name= graphUser.getName()));
Strign profilePic= "http://graph.facebook.com/" + graphUser.getId() + "/picture"));
} else {
}
}
});
RequestAsyncTask asyncTask=mRequest.executeAsync();
} else if (state.isClosed()) {
}
}
};
这里
答案 2 :(得分:0)
public void RequestData(){
GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
JSONObject json = response.getJSONObject();
try {
if(json != null){
String text = "<b>Name :</b> "+json.getString("name")+"<br><br><b>Email :</b> "+json.getString("email")+"<br><br><b>Profile link :</b> "+json.getString("link");
details_txt.setText(Html.fromHtml(text));
profile.setProfileId(json.getString("id"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,email,picture");
request.setParameters(parameters);
request.executeAsync();
}