我正在实施新的Facebook SDK,除了登录后,一切看起来都是有序的。当应用程序将我带到Safari并且我给它'好'时,它会返回到应用程序并报告成功:
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen: {
NSLog(@"success");
}
.
.
.
}
但是当我在之后立即检查状态时:
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
NSLog(@"Logged in");
} else {
NSLog(@"Not logged in");
}
我给了:没有登录。我没有收到任何错误消息。似乎令牌在发布后直接到期。想要如何解决这个问题的一些指导。此应用程序是作为新项目创建的,但是是现有应用程序的更新。但是,在运行新应用程序时,旧应用程序不在我的设备上。我以为我会提到它应该是重要的。
答案 0 :(得分:1)
该状态特定于此条件:
/*! One of two initial session states indicating that a cached token was loaded;
when a session is in this state, a call to open* will result in an open session,
without UX or app-switching*/
FBSessionStateCreatedTokenLoaded = 1,
由于“成功”NSLog在您发布的代码中执行,因此您的状态实际为: FBSessionStateOpen 。这意味着您已登录并拥有有效的访问令牌(注销FBSession.activeSession.accessToken以进行验证)。无论如何,我相信你应该是好的 - 你的登录/未记录状态只是无效。