默认错误消息 - 适用于 iOS 的 Cordova Facebook Connect 插件

Posted

技术标签:

【中文标题】默认错误消息 - 适用于 iOS 的 Cordova Facebook Connect 插件【英文标题】:Default error message - Cordova Facebook Connect Plugin for iOS 【发布时间】:2014-05-14 03:47:36 【问题描述】:

我正在使用 cordova facebook connect 插件对我的应用程序进行用户身份验证。我的问题是,如果用户取消登录或分享到 Facebook,我仍然不知道如何禁用默认错误消息。

我已经禁用了 facebook-js-sdk.js 文件中的所有警报消息,但仍在发生。

【问题讨论】:

这个问题好运吗? 【参考方案1】:

是的。效果很好。

进入 FacebookConnectPlugin.m 文件,找到这个函数

- (void) showDialog:(CDVInvokedUrlCommand*)command

用该函数中的这段代码替换。

// Save the callback ID
    self.dialogCallbackId = command.callbackId;

    NSMutableDictionary *options = [[command.arguments lastObject] mutableCopy];
    NSString* method = [[NSString alloc] initWithString:[options objectForKey:@"method"]];
    if ([options objectForKey:@"method"]) 
        [options removeObjectForKey:@"method"];
    
    __block BOOL paramsOK = YES;
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
    [options enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) 
        if ([obj isKindOfClass:[NSString class]]) 
            params[key] = obj;
         else 
            NSError *error;
            NSData *jsonData = [NSJSONSerialization
                                dataWithJSONObject:obj
                                options:0
                                error:&error];
            if (!jsonData) 
                paramsOK = NO;
                // Error
                *stop = YES;
            
            params[key] = [[NSString alloc]
                           initWithData:jsonData
                           encoding:NSUTF8StringEncoding];
        
    ];

    if (!paramsOK) 
        CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR
                                         messageAsString:@"Error completing dialog."];
        [self.commandDelegate sendPluginResult:pluginResult callbackId:self.dialogCallbackId];
     else 
        // Show the web dialog
        [FBWebDialogs
         presentDialogModallyWithSession:FBSession.activeSession
         dialog:method parameters:params
         handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) 
             CDVPluginResult* pluginResult = nil;
             if (error) 
                 // Dialog failed with error
                 pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR
                                                  messageAsString:@"Error completing dialog."];
              else 
                 if (result == FBWebDialogResultDialogNotCompleted) 
                     // User clicked the "x" icon to Cancel
                     //pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR
                                                      //messageAsString:@"User cancelled."];
                  else 
                     // Send the URL parameters back, for a requests dialog, the "request" parameter
                     // will include the resluting request id. For a feed dialog, the "post_id"
                     // parameter will include the resulting post id.
                     NSDictionary *params = [self parseURLParams:[resultURL query]];
                     pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:params];
                 
             
             [self.commandDelegate sendPluginResult:pluginResult callbackId:self.dialogCallbackId];
         ];
        [super writejavascript:nil];
    

    // For optional ARC support
    #if __has_feature(objc_arc)
    #else
        [method release];
        [params release];
        [options release];
    #endif

【讨论】:

以上是关于默认错误消息 - 适用于 iOS 的 Cordova Facebook Connect 插件的主要内容,如果未能解决你的问题,请参考以下文章

适用于VS 2017的Cordova工具 - 不支持的类文件版本52

使用适用于 iOS 的 AddThis SDK,需要更改默认 Twitter 文本的“通过 @AddThis”

错误代码 100 适用于 iOS 的解析 SDK

适用于 iOS 的 Facebook SDK 不会随链接一起发布照片

适用于 Android 和 iOS 的具有相互证书的消息安全性

适用于 iOS 应用的 GCM(Google 云消息传递)