我正在使用Quickblox iOS SDK 2.0.12
我一直在遵循Quickblox身份验证和授权here上的说明。
我调用QBRequest createSessionWithSuccessBlock:
,然后在其完成块中调用QBRequest signUp:
,然后在下一个完成块内调用QBRequest logInWithUserLogin:
。
根据以上链接,我在完成所有这些操作后现在应该有Quickblox User Session
。这一切都很完美,所有的调用都是成功的,我可以看到用户现在在Quickblox Admin Panel
。
执行此操作后,如果我发出Quickblox
个请求,他们就可以正常工作了。唯一奇怪的是,[[QBSession currentSession] currentUser]
NSLogs
为(null)
。
无论如何,如果我停止在模拟器上运行应用程序,然后在10分钟后再次运行应用程序,我会检查持久的自定义数据,以便我可以查看用户是否已经注册。当用户注册后,我将其带入应用程序,而不是需要注册或再次登录。
现在,如果我尝试向Quickblox
发出任何请求,我会收到以下异常:
Terminating app due to uncaught exception 'BaseServiceException', reason: 'You have missed the authorization call.
Please insert following code inside your application
[QBRequest createSessionWithSuccessBlock:errorBlock:];
Before any other code, that uses our service, but after setup credentials. Thank you.'
我不明白为什么当我在用户第一次注册时创建一个会话时,我需要创建一个会话。我知道会话每2个小时到期一次,但我很快就会对此进行测试,而且我总是收到此错误。
如果我NSLog
[QBSession currentSession]
我可以看到当前有一个QBSession
个对象,但如果我尝试NSLog
任何属性,例如sessionDetails
,sessionExpirationDate
或currentUser
他们都记录为(null)
。
答案 0 :(得分:3)
据我所知,只有使用此方法- (void)startSessionForUser:(QBUUser *)user withDetails:(QBASession *)session expirationDate:(NSDate *)sessionDate
,才能正确使用此属性。但是我没用过它。
为了重新创建会话,我使用[QBConnection setAutoCreateSessionEnabled:YES]
并进行聊天,我将QBUUser保留在我的管理器中,输入前台后,我检查XMPP连接[[QBChat instance] isLoggedIn]
。也许它可以帮到你。