将facebook会话传递给服务(SDK 3.0.1)

时间:2013-04-09 14:33:36

标签: android facebook

我有一个主要的活动和服务,我每隔x小时更新一次从Facebook获取的一些数据。

在这些日子里,我终于转向新的SDK 3.0.1(从2.x开始),我将facebook Session传递给服务时遇到了问题:

如果服务在主活动仍在运行时运行,一切正常,否则我的会话为空,因此它会在if(session.isOpened()){...}崩溃,因为session == null。

这是我的代码:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("ServiceUpdate", "Received start id " + startId + ": " + intent);

    session = Session.getActiveSession();

    startservice();
    return START_STICKY;
}


private void startservice() {

    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {         
            if (session.isOpened()) {
                if (isOnline()) {
                    Log.i("ServiceUpdate", "start timer");

                    update();

                    Log.i("ServiceUpdate", "end timer");
                }
             }

    }, 600000, 6 * 3600000);

}

我是否必须使用保存的acces_token和expire_time初始化会话,就像我以前使用SDK 2.x一样?

谢谢!

1 个答案:

答案 0 :(得分:2)

Session的默认行为是将令牌信息保存在Android的SharedPreferences中,因此您应该只能在服务中调用Session.openActiveSessionFromCache。如果返回null,则表示您的用户尚未与Facebook建立连接。