在我的应用程序中,我使用facebook登录来访问我的应用程序。我的问题是无法通过facebook登录获取用户信息获取空值 这是我的回调
loginbutton.registerCallback(callback, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Profile profile = Profile.getCurrentProfile();
if(profile!=null){
Log.e("User FirstName", profile.getFirstName());
}
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
}
});
否则一切正常。
任何人都可以帮帮我。
答案 0 :(得分:1)
您可以通过在登录成功时调用异步任务来获取个人资料详细信息
@Override
public void onSuccess(LoginResult result) {
fetchProfileDetail(result.getAccessToken());
}
public void fetchProfileDetail(final AccessToken fbAccessToken) {
GraphRequest request = GraphRequest.newMeRequest(fbAccessToken, new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
try {
JSONObject jsonObject = response.getJSONObject();
String name = jsonObject.optString("first_name");
if(!jsonObject.optString("last_name").isEmpty()){
name+=" "+jsonObject.optString("last_name");
}
String fb_id = jsonObject.optString("id");
String emailId = jsonObject.optString("email");
String profileUrl = "";
if (jsonObject.has("picture")) {
JSONObject picture = jsonObject.getJSONObject("picture");
JSONObject picData = picture.getJSONObject("data");
profileUrl = picData.optString("url");
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,email,name,first_name,last_name,picture.height(300).width(300)");
request.setParameters(parameters);
request.executeAsync();
}