in src/main/java/com/facebook/android/Facebook.java [530:560]
public void handleMessage(Message msg) {
String token = msg.getData().getString(TOKEN);
long expiresAt = msg.getData().getLong(EXPIRES) * 1000L;
// To avoid confusion we should return the expiration time in
// the same format as the getAccessExpires() function - that
// is in milliseconds.
Bundle resultBundle = (Bundle) msg.getData().clone();
resultBundle.putLong(EXPIRES, expiresAt);
if (token != null) {
setAccessToken(token);
setAccessExpires(expiresAt);
if (serviceListener != null) {
serviceListener.onComplete(resultBundle);
}
} else if (serviceListener != null) { // extract errors only if client wants them
String error = msg.getData().getString("error");
if (msg.getData().containsKey("error_code")) {
int errorCode = msg.getData().getInt("error_code");
serviceListener.onFacebookError(new FacebookError(error, null, errorCode));
} else {
serviceListener.onError(new Error(error != null ? error
: "Unknown service error"));
}
}
// The refreshToken function should be called rarely,
// so there is no point in keeping the binding open.
applicationsContext.unbindService(TokenRefreshServiceConnection.this);
}