我在我的 Android 应用程序中使用 Facebook 和 Parse SDK。我按照本教程进行 Facebook 登录和身份验证,根据会话状态是否OPENED在Session.StatusCallback. 在与 Parse 集成之前,该应用程序可以完美运行。
现在我遇到了一个问题。在onResume()主菜单片段的方法中,我添加了以下代码。
final Session session = Session.getActiveSession();
if(session != null && session.isOpened()) {
Request meRequest = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser graphUser, Response response) {
if(session == Session.getActiveSession()) {
// Check if the session is same as usual
ParseFacebookUtils.logIn(graphUser.getId(), session.getAccessToken(),
session.getExpirationDate(), new LogInCallback() {
@Override
public void done(ParseUser user, ParseException err) {
if (user == null) {
// The user wasn't saved.
System.out.println("User was not saved to Parse. ");
} else {
// The user has been saved to Parse.
System.out.println("User has successfully been saved to Parse.");
if (user.isNew()) {
// This user was created during this session with Facebook Login.
System.out.println("ParseUser created.");
} else {
// This user existed before.
System.out.println("User exists in Parse. Pull their values: " + user);
}
}
}
});
}
}
});
meRequest.executeAsync();
}
因此,当片段恢复并打开 Facebook 会话时,Facebook 用户将被添加到 Parse 数据库中,以便我可以在之后使用ParseUsertoput和get数据。但是在使用 时会出现问题ParseFacebookUtils.logIn(),它会创建 Facebook 会话CLOSED并调用Session.StatusCallback,从而将可见片段切换回登录片段。
我整天都在处理这个问题,但找不到解决方案。我已在应用程序中添加了以下代码,但仍然无法正常工作。
Parse.enableLocalDatastore(this);
Parse.initialize(this, Application_id, Client_key);
ParseFacebookUtils.initialize(getString(R.string.facebook_app_id));
有没有办法来解决这个问题?我已阅读此内容,但没有提供非常好的解决方案。提前致谢!