我正在尝试检查Facebook会话是否有效,这可能是因为:
- 会话已过期。
- 用户已注销。
- 用户已删除我的Facebook应用程序。
- 用户不再存在。
我有这个方法来检查用户是否仍然登录:
public boolean isLoggedIn() {
Session session = Session.getActiveSession();
if (session != null && session.isOpened()) {
return true;
} else {
return false;
}
}
但是,即使用户从他的Facebook帐户中删除了我的应用程序,它仍会返回true。
当我调用任何Facebook请求时,我会从Facebook获得以下回复:
08-14 12:20:40.671: I/facebookActivity(2322): Result: {Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 190, errorType: OAuthException, errorMessage: Error validating access token: User 343343434 has not authorized application 45345345.}, isFromCache:false}
之后我对 Facebook 发出的每个请求都会得到不同的响应:
08-14 12:21:09.707: I/facebookActivity(2322): Result: {Response: responseCode: 200, graphObject: null, error: {HttpStatus: -1, errorCode: -1, errorType: null, errorMessage: null}, isFromCache:false}
我可以检查JSON中是否存在错误并尝试创建新的Facebook会话,但我想在发出任何Facebook请求之前避免这样做,或者至少在活动启动时调用一次以检查会话是否有效。
有没有一种正常的方法来检查会话是否有效?
if (condition) return true else return false
,请将其替换为return condition
。所以在你的情况下,只需使用return (session!=null && session.isOpened());
。 - Ivo