从没有为会话设置的onActivityResult获取facebook活动的结果

时间:2015-02-19 12:45:01

标签: android facebook facebook-android-sdk

我正在使用android facebook sdk,但我遇到了一个问题。 我创建了两个类:

public class FacebookSession implements Session.StatusCallback {

public interface SessionCallbacks {
    public void onSessionOpened(String token, User user, boolean isNewProfile);
    public void onSessionOpenFailed(String errorText);
}

public FacebookSession(Activity activity) {
    ...
}

@Override
public void call(Session session, SessionState sessionState, Exception e) {
    switch (sessionState) {
        case CLOSED:
            ...
            // Calling SessionCallbacks callbacks here
            break;

        case CLOSED_LOGIN_FAILED:
            ...
            // Calling SessionCallbacks callbacks here
            break;

        case OPENED:
            ...
            // Calling SessionCallbacks callbacks here
            break;

        case OPENED_TOKEN_UPDATED:
            ...
            // Calling SessionCallbacks callbacks here
            break;
    }
}
}

在我的活动中呼叫facebook会话:

public class LoginActivity extends FragmentActivity implements
    FacebookSession.SessionCallbacks {

public LoginActivity() {

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    ...
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

@Override
public void onSessionOpened(String token, User user, boolean isNewProfile) {
    ...
}
}

正如您所见,如果我希望在Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);中返回结果,我必须使用onActivityResult类在每个活动的FacebookSession方法中调用call回调FacebookSession。如果我不这样做,我的FacebookSession就行不通。我想在这里做的是不必为使用Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);的每个活动调用此FacebookSession。这有解决方法吗?谢谢

1 个答案:

答案 0 :(得分:1)

如果您的所有活动都有可能记录用户或请求其他权限,那么没有,实现onActivityResult方法没有解决方法。通常情况下,使用Facebook登录功能的应用程序只能从一些有限的活动中进行,因此这不是问题。

您要处理多少活动?如果你绝对认为这是一个问题,那么你可以

  1. 创建一个所有活动都扩展的BaseActivity类,并将onActivityResult放在父类中;或

  2. 将您的所有Facebook集成转移到集中式活动中。