Java Request.newMeRequest永远不会返回
我使用Request.newMeRequest通过facebook登录获取用户的电子邮件和姓名,我使用以下代码块 此代码存在于名为SignUp的活动中,用户也可以从MainActivity进行导航 我的问题是,在输入电子邮件和密码并成功授予facebook权限后,应用程序将返回到MainActivity状态,而函数的其余部分将永远不会触发onCompleted部分Java Request.newMeRequest永远不会返回,java,android,facebook,Java,Android,Facebook,我使用Request.newMeRequest通过facebook登录获取用户的电子邮件和姓名,我使用以下代码块 此代码存在于名为SignUp的活动中,用户也可以从MainActivity进行导航 我的问题是,在输入电子邮件和密码并成功授予facebook权限后,应用程序将返回到MainActivity状态,而函数的其余部分将永远不会触发onCompleted部分 private void performFacebookLogin() { Log.d("FACEBOOK", "perfo
private void performFacebookLogin()
{
Log.d("FACEBOOK", "performFacebookLogin");
final Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(this, Arrays.asList("email"));
Session openActiveSession = Session.openActiveSession(this, true, new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
Log.d("FACEBOOK", "call");
if (session.isOpened() && !isFetching)
{
Log.d("FACEBOOK", "if (session.isOpened() && !isFetching)");
isFetching = true;
session.requestNewReadPermissions(newPermissionsRequest);
Request getMe = Request.newMeRequest(session, new GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
Log.d("FACEBOOK", "onCompleted");
if (user != null)
{
Log.d("FACEBOOK", "user != null");
org.json.JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
String email = graphResponse.optString("email");
String id = graphResponse.optString("id");
String facebookName = user.getUsername();
if (email == null || email.length() < 0)
{
AlertDialog alertDialog = new AlertDialog.Builder(getApplicationContext()).create();
alertDialog.setTitle("Facebook Login");
alertDialog.setMessage("An email address is required for your account, we could not find an email associated with this Facebook account. Please associate a email with this account.");
alertDialog.setButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
alertDialog.show();
return;
}
}
}
});
getMe.executeAsync();
}
else
{
if (!session.isOpened())
Log.d("FACEBOOK", "!session.isOpened()");
else
Log.d("FACEBOOK", "isFetching");
}
}
});
}
您是否在注册活动中覆盖onActivityResult方法以调用Session.getActiveSession.onActivityResult?是的,它似乎也从未被调用过,我编辑了我的主要帖子以展示我是如何实现它的。我遇到了同样的问题-您解决过这个问题吗?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("FACEBOOK", "onActivityResult");
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}