在从ios应用程序注册QuickBlox中的新用户时终止应用程序

从ios应用程序用login名和密码凭证在QuickBlox中注册新用户时,应用程序崩溃,NSLog控制台显示如下错误,

终止应用程序由于未捕获的exception“BaseServiceException”,原因:'您错过了授权调用。 请在您的应用程序中插入以下代码[QBRequest createSessionWithSuccessBlock:errorBlock:]; 在任何其他代码之前,使用我们的服务,但在设置凭据之后。

First throw call stack:( 0 CoreFoundation 0x038365e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x02ca48b6 objc_exception_throw + 44 2 VideoChat 0x00028e2f -[QBHTTPConnection generateRequestOperation:forPath:usingMethod:] + 1231 3 VideoChat 0x00028092 -[QBConnection executeRequest:forPath:usingMethod:] + 162 4 VideoChat 0x0001b049 +[QBRequest(QBAuth) signUp:successBlock:errorBlock:] + 825 5 VideoChat 0x0000457d -[AppDelegate application:didFinishLaunchingWithOptions:] + 2077 6 UIKit 0x017ff355 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 309 7 UIKit 0x017ffb95 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1536 8 UIKit 0x018043a8 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 824 9 UIKit 0x0181887c -[UIApplication handleEvent:withNewEvent:] + 3447 10 UIKit 0x01818de9 -[UIApplication sendEvent:] + 85 11 UIKit 0x01806025 _UIApplicationHandleEvent + 736 12 GraphicsServices 0x03d6b2f6 _PurpleEventCallback + 776 13 GraphicsServices 0x03d6ae01 PurpleEventCallback + 46 14 CoreFoundation 0x037b1d65 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53 15 CoreFoundation 0x037b1a9b __CFRunLoopDoSource1 + 523 16 CoreFoundation 0x037dc77c __CFRunLoopRun + 2156 17 CoreFoundation 0x037dbac3 CFRunLoopRunSpecific + 467 18 CoreFoundation 0x037db8db CFRunLoopRunInMode + 123 19 UIKit 0x01803add -[UIApplication _run] + 840 20 UIKit 0x01805d3b UIApplicationMain + 1225 21 VideoChat 0x00004cbd main + 141 22 libdyld.dylib 0x033dc725 start + 0) 

我正在使用下面的代码来创build一个新的用户,

 [QBRequest createSessionWithSuccessBlock:^(QBResponse *response, QBASession *session) { // session created } errorBlock:^(QBResponse *response) { // handle errors NSLog(@"%@", response.error); }]; QBUUser *user = [QBUUser user]; user.password = @"azhhdsf"; user.login = @"dsfgsgf"; // Registration/sign up of User [QBRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) { // Sign up was successful } errorBlock:^(QBResponse *response) { // Handle error here NSLog(@"error while signing up with QB"); }]; 

我在这里看到了一个答案,但是它会抛出一个错误,那就是delegate:self已被弃用,并且需要使用上面的方法signUp: successBlock: .

有没有人遇到过这个问题? 如何解决这个问题? 任何build议将不胜感激。

所有这些请求都是asynchronous的,您不能以这种方式使用它。

正确的方法是等到会话将被创build,然后注册一个用户:

 [QBRequest createSessionWithSuccessBlock:^(QBResponse *response, QBASession *session) { // session created QBUUser *user = [QBUUser user]; user.password = @"azhhdsf"; user.login = @"dsfgsgf"; // Registration/sign up of User [QBRequest signUp:user successBlock:^(QBResponse *response, QBUUser *user) { // Sign up was successful } errorBlock:^(QBResponse *response) { // Handle error here NSLog(@"error while signing up with QB"); }]; } errorBlock:^(QBResponse *response) { // handle errors NSLog(@"%@", response.error); }];