第三方登陆UIWebView渲染数据的问题

        做第三方登陆,使用UIWebView加载服务端封装的一个连接,然后服务端返回QQ或新浪微博的登陆页,输入用户名和密码后,服务端处理所有的先关账号的关联操作后,把登陆成功后的用户名信息渲染到到UIWebView上。此时就会存在一个用户会看到UIWebView上的数据,所以需要别的方式处理这个方式。

        判断当要访问返回登陆信息的URL地址的时候,阻止加载这个地址,使用创建两外一个UIWebView加载这个地址。

        方法如下:

#pragma mark - UIWebViewDelegate Method


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

    NSString *currentURL = request.URL.absoluteString;

    // 判断是否要加载返回的登陆信息的URL地址

    if ([currentURL rangeOfString:@"/appsina?"].location != NSNotFound || [currentURL rangeOfString:@"/appqq?"].location != NSNotFound) {

        if (webView.tag == kGetLoginInfo) {

            return YES;

        }

        [_tempWebView release];

        _tempWebView = [[UIWebView alloc] init];    // 创建新的UIWebView加载最终的URL地址

        NSURL *url = [NSURL URLWithString:currentURL];        

        NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url];

        request.HTTPMethod = @"GET";

        [_tempWebView loadRequest:request];

        _tempWebView.delegate = self;

        _tempWebView.tag = kGetLoginInfo;

        return NO;

    }

    return YES;

}

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    [self.indicatorView stopAnimating];

    NSString * currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];    // 获取网页内容

    if ([currentURL rangeOfString:@"/appsina?"].location != NSNotFound || [currentURL rangeOfString:@"/appqq?"].location != NSNotFound) {

        [self loginSuccessed:webView];

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值