PhoneGap iOS oAuth重定向失败(NSURLErrorDomain错误-999。)

时间:2013-05-08 13:27:02

标签: cordova oauth meteor

MeteorJS:https://github.com/zeroasterisk/Presenteract

PhoneGap:https://github.com/zeroasterisk/Presenteract-PhoneGap-ios

  • 我正在iOS上的PhoneGap 2.7中运行MeteorJS应用程序。
  • MeteorJS应用程序通过外部网址加载,在config.xml中设置<content src="http://presenteract.meteor.com" />
  • 我在浏览器中使用oAuth没有任何问题
  • 使用完整通配符access
  • 设置<access origin="*" />配置
  • 该应用程序运行良好,与浏览器版本相同....

但是当我从PhoneGap中尝试oAuth时,我最终得到以下错误:

Failed to load webpage with error: The operation couldn’t be completed.
(NSURLErrorDomain error -999.)

(注意:来自Google,Facebook和Twitter的oAuth尝试都是相同的。加载外部网站,登录正常进行,并在重定向回到我的应用程序的主URL)

我查看了其他StackOverflow报告并完成了一些googeling ...我找到的最有用的是:

Facebook dialog failed with error: The operation couldn’t be completed. (NSURLErrorDomain error -999.) &安培;相关:NSURLErrorDomain error -999 - links failing in iOS

这似乎很有希望,但我不知道如何将此解决方案转换为PhoneGap ...

我在<projectname>/Classes/MainViewController.m中找到了以下存根,我玩了一下,但还没有解决方案....

- (void) webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error
{
    /* (this does log to the console, but doesn't tell me anything different)
    * still: theWebView webView didFailLoadWithError:NSURLErrorDomain -999
    */
    NSLog(@"theWebView webView didFailLoadWithError:%@ %d",error.domain,error.code);

    /* (this is commented out, it didn't seem to do anything for me) */
    if ([error.domain isEqualToString:@"NSURLErrorDomain"] && error.code == -999) {
        NSLog(@"theWebView webView caught the error=-999... but returning void doesn't force the page to reload/continue:%@ %d",error.domain,error.code);
        return;
    }

    /* (this was already here, part of PhoneGap) */
    return [super webView:theWebView didFailLoadWithError:error];
}

我得到第二个“抓住错误= -999”日志消息,但我仍然在应用程序的白色屏幕上结束。

  • 也许有一些设置允许重定向回我的应用程序的URL?
  • 也许我需要强制它重新加载我的应用程序的主页面?
  • 也许我需要一些更优雅的方法来捕捉错误,以便它不会停止加载?
  • 也许我首先需要更多关于导致失败的原因的信息?

1 个答案:

答案 0 :(得分:2)

当我从Cordova(PhoneGap)2.2升级到2.7时,我遇到了同样的错误。

看看你的描述,我不能轻易判断它是否是同一个问题。但是,我认为分享我的解决方案/解决方案可能有所帮助。

我遇到的问题是Cordova 2.7在启动过程中没有正确处理客户端重定向。

我也试过玩MainViewController.m,但我不相信问题可以在那里解决。

我的解决方案是修改CordovaLib/Classes/CDVWebViewDelegate.m以处理重定向案例。

这是我的拉动请求:

https://github.com/apache/cordova-ios/pull/57/files