4

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

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

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

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

4

3 回答 3

3

我认为适用于 iOS 的 facebook SDK 示例会按照您想要的方式登录。请参考链接: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 开始。这真的是一个很好和详细的样本。

于 2012-07-24T01:50:55.967 回答
1

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

首先包含 UIWebViewDelegate 并在代码中的某个位置设置您的委托。

[yourwebView setDelegate:self];

然后使用 shouldStartLoadWithRequest 方法检查 Facebook 用来关闭其弹出窗口的 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;
}
于 2013-02-10T23:00:54.563 回答
0

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

于 2012-07-24T02:40:10.233 回答