Facebook和G +使用UIWebView登录

时间:2016-03-04 09:21:51

标签: ios objective-c facebook uiwebview

我的iOS应用程序有一个在UIWebView中设置的登录页面。它还有Facebook和G +登录。我可以让正常的登录屏幕工作,好吧。但是当我用Facebook和G +这样做时,我遇到了问题。我假设原因是按下单击按钮弹出的新窗口。 有没有办法在不诉诸手动登录的情况下处理这个问题?

1 个答案:

答案 0 :(得分:1)

使用原生Facebook和G +登录要容易得多。您要完成的任务比使用本机登录要复杂得多。

如果您真的出于某种原因必须在UIWebView中执行此操作,则必须实施以下策略:

  • 覆盖-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType协议的UIWebViewDelegate方法。

  • 在您的实现中,您应该在另一个模态UIWebView中打开登录界面并在那里处理登录事件,并且在解除该模态视图时,如果登录成功,则继续使用应用程序流。

    < / LI>

这看起来像这样:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    NSURL *url = [request URL];

    //for facebook login
    if ([[url absoluteString] containsString:@"m.facebook.com"] && [[url absoluteString] containsString:@"login"]) {

        // instantiate and present new modal UIViewController containing UIWebView that loads the url. 
        return NO;
    }

    //for G+ something similar

    return [super webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];

}

然后,登录的模态viewControllers还必须实现如何处理可能的登录事件的逻辑,并在成功时解雇自己,这将非常复杂。

第一个webView还必须知道模式何时被解除(可以通过协议或其他方式完成),然后检查登录状态,如果成功则继续。

因此,正如我所说,如果您使用本机登录,那将是最好的。