繁体   English   中英

Facebook登录在UIWebView中失败

[英]Facebook login fails in UIWebView

在我的应用程序中,我必须在UIWebView中加载一个网页,用户可以使用Facebook登录。 问题是当用户点击登录时,会出现空白页面。

是否可以返回第一页并登录?

网页在Safari中完美运行并打开新窗口,登录后关闭它并返回到它离开的位置。

编辑:向UIWebView提供了错误的URL

我认为facebook SDK for iOS的示例以您想要的方式进行登录。 请参考链接:facebook-iOS-SDK-sample: https//github.com/facebook/facebook-ios-sdk/tree/master/sample/Hackbook

特别是这部分在https://github.com/facebook/facebook-ios-sdk/blob/master/sample/Hackbook/Hackbook/RootViewController.m

/**
 * Show the authorization dialog.
 */
- (void)login {
    HackbookAppDelegate *delegate = (HackbookAppDelegate *)[[UIApplication sharedApplication] delegate];
    if (![[delegate facebook] isSessionValid]) {
        [[delegate facebook] authorize:permissions];
    } else {
        [self showLoggedIn];
    }
}

当您单击登录按钮时,它将打开登录对话框,并请求权限。 这就是它的样子: https//developers.facebook.com/docs/mobile/screenshots/ios/#iphone-native

我认为实现“facebook相关”应用程序的最佳方式是从Hacbook开始。 这是一个非常好的详细样本。

如果要在关闭facebook登录弹出窗口后重新加载特定URL以防止卡在空白页面上,则可以使用此代码。

首先包括UIWebViewDelegate并在代码中的某处设置委托。

[yourwebView setDelegate:self];

然后使用shouldStartLoadWithRequest方法检查用于关闭弹出窗口的close_popup.php的请求URL。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{    
    NSString *urlString = [NSString stringWithFormat:@"%@", request];
    if ([urlString rangeOfString:@"close_popup.php"].location == NSNotFound) {
        //The close_pop.php is not found. (Do nothing)
    } else {
        //Facebook closed the popup so we should load the page we now want the user to see. 
        NSURL*url=[NSURL URLWithString:@"http://www.example.ca/thepageyouwanttoreload.html"];
        NSURLRequest*request=[NSURLRequest requestWithURL:url];
        [webView loadRequest:request];
    }
    return YES;
}

SSL问题? 根据Joanne使用facebook SDK,您可以免费获得大量额外功能,包括通过facebook本机应用程序登录(如果已安装)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM