2

我已阅读此处的文档和源代码以及其他相关问题,但我仍然在使用适用于 Android 的 Facebook SDK 3 授权/登录我的应用程序时遇到问题。

我不想使用提供的“登录”按钮。

以下是相关代码:

在 Activity.onCreate 我开始会话:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Session session = Session.getActiveSession();
    mPrefs = getSharedPreferences("facebook_storage", MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (session == null) {
        if (access_token != null) {
            SharedPreferences.Editor editor = mPrefs.edit();
            editor.putString("access_token", null);
            editor.commit();
            AccessToken accessToken = AccessToken.createFromExistingAccessToken(access_token, null, null, null, null); 
            session.open(accessToken, this);

        } else {
            session = new Session(getApplicationContext());
        }
        Session.setActiveSession(session);
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
            session.openForRead(new Session.OpenRequest(this).setCallback(this));
        } else if (session.getState().equals(SessionState.CREATED)) {
            System.out.println("Session created, no token. I guess");
            session.openForRead(new Session.OpenRequest(this).setCallback(this));
        }
    }

这会触发:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }

这又会触发下一个块,输入 at if (session.isOpened())

public void call(Session session, SessionState state, Exception exception) {
    // TODO Auto-generated method stub
    if (session == null) {
        MmfLogger.error("FacebookLogin session == null in call()");
    } else if (session.isOpened()) {
        System.out.println("Session.StatusCallback success: " + session.getState());
        Request request = new Request(session, REQUEST_FIELDS, null, null, this);
        request.executeAsync();
    }   
    if (!session.isOpened()) {
        System.out.println("session failed to open");
    }
    if (session.isOpened() && session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
        Request request = new Request(session, REQUEST_FIELDS, null, null, this);
        request.executeAsync();
    } else if (session.isOpened() && session.getState().equals(SessionState.CREATED)) {
        System.out.println("session isOpened and state is created");
    }

}

从这里我得到一个错误,指出我需要一个活动令牌。但是,在发出请求之前,我可以看到令牌。会议有一个。我哪里错了?

感谢您的时间。

4

0 回答 0