2013-12-17 30 views
1

我使用此代码检查天气用户登录Facebook或不,它会打开登录页面。我使用相同的代码作为例子在facebook sdk(PlacePickerSample)上:Android:检查会话Facebook不工作?

private boolean ensureOpenSession() { 
    if (Session.getActiveSession() == null || 
      !Session.getActiveSession().isOpened()) { 
     Session.openActiveSession(this, true, new Session.StatusCallback() { 
      @Override 
      public void call(Session session, SessionState state, Exception exception) { 
       onSessionStateChanged(session, state, exception); 
      } 
     }); 
     return false; 
    } 
    return true; 
} 

但它不起作用。它只是去黑色的背景,然后立即返回到我的应用程序。剂量谁知道为什么?

谢谢。

+0

我的故障:<活动 机器人:名称= “com.example.cst_share.Share” 机器人:标签= “@串/ APP_NAME” 机器人:launchMode = “singleInstance”>删除机器人:刘嘉玲nchMode,它应该工作... – hoangmeo325

+0

调用session.isOpened()来检查会话是否已经打开。 –

+0

我有这个确切的问题,我没有在我的清单中看到launchMode =“singleInstance”,所以我猜这对我来说没有错。任何人都可以在这个问题上找到一些启示吗? –

回答

0

我有同样的问题,打印出的很多,我发现地方的会话信息后,我不得不抛出以下异常:

Session: an attempt was made to reauthorize a session that has a pending request 

的解决方案是把下面的方法的代码,该代码调用ensureOpenSession:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
} 
+0

这不完全是我的问题。如果你不这样覆盖onActivityResult(),你的应用程序仍然打开登录页面,但它不能保存你的会话。登录后仍然不会登录!但是,我标记你的答案,有人可能需要它。 – hoangmeo325