Facebookのエラーハンドリング
現在AndroidとFacebookを連携したアプリを作成しているのですが、Androidがインターネットに繋がっていない状態でアプリからFacebookにログインしようとすると、ログインのViewが一瞬現れてすぐに消えてしまいます。なのでその際のエラーコードなどを知りたいのですが、色々と調べてみてもどうすればいいか分かりません。どこにどういうメソッドを追加すればFacebookでのエラーを検知することができるでしょうか?下記のコードがFacebookの認証 & 投稿のコードになります。すみませんが、宜しくお願いします。
public class PostFacebook {
private static Activity mActivity;
private static Session mSession;
private boolean mLoopStopFlag;
public PostFacebook(Activity activity) {
mActivity = activity;
}
private void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (state.isOpened()) {
mLoopStopFlag = false;
} else if (state.isClosed()) {
if (mSession.getState() != SessionState.CLOSED_LOGIN_FAILED) {
if (!mLoopStopFlag) {
initSession();
mSession.openForPublish(new Session.OpenRequest(mActivity).setCallback(callback).setPermissions(Arrays.asList("publish_actions")));
mLoopStopFlag = true;
}
}
}
}
public Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
private void initSession() {
mSession = new Session(mActivity);
Session.setActiveSession(mSession);
}
public void shareFacebook() {
if (mSession != null) {
if (mSession.getState() == SessionState.CLOSED_LOGIN_FAILED) {
initSession();
mSession.openForPublish(new Session.OpenRequest(mActivity).setCallback(callback).setPermissions(Arrays.asList("publish_actions")));
}
} else {
initSession();
mSession.openForPublish(new Session.OpenRequest(mActivity).setCallback(callback).setPermissions(Arrays.asList("publish_actions")));
}
post();
}
public static void post() {
Bitmap image = FacebookContents.getInstance().getmImage();
if (mSession.isOpened()) {
Request request = Request.newUploadPhotoRequest(mSession, image, new
Request.Callback() {
@Override
public void onCompleted(Response response) {
if (response.getError() == null) {
Toast.makeText(mActivity, "メッセージを投稿しました。", Toast.LENGTH_SHORT).show();
} else {
if (mSession.getState() == SessionState.OPENED) { Toast.makeText(mActivity, "失敗", Toast.LENGTH_SHORT).show(); }
}
}
});
Bundle params = request.getParameters();
{
params.putString("message", FacebookContents.getInstance().getmMessage());
}
request.executeAsync();
}
}
}