//代码
callback = new FacebookCallback<LoginResult>() {
Profile profile;
@Override
public void onSuccess(LoginResult loginResult) {
profile = Profile.getCurrentProfile();
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
// Application code
try {
email=object.getString("email");
login(email,profile.getId());
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "email");
request.setParameters(parameters);
request.executeAsync();
nextActivity();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
};
public void login(String email,String password){
editor.putBoolean("islogin",true);
editor.putString("email", email);
editor.putString("password",password);
editor.commit();
}
我想从FacebookCallback收到电子邮件,但登录方法没有执行,当我尝试使用回调中的电子邮件(变量)时,我得到了电子邮件的第一个值?我怎么解决这个问题 !!谢谢
答案 0 :(得分:0)
由于email
变量不在代码段中,因此它必须来自嵌套匿名函数之外:new FacebookCallback<LoginResult>()
和new GraphRequest.GraphJSONObjectCallback()
这意味着必须声明它final
因此无法在您的代码中重置该值:email=object.getString("email");
您应该使用局部变量:
try {
String userEmail =object.getString("email");
login(userEmail,profile.getId());
}