在我的应用程序中,我必须在 UIWebView 中加载一个网页,用户可以在其中使用 Facebook 登录。问题是当用户点击登录时,会出现空白页面。
是否可以返回第一页并登录?
网页在 Safari 中完美运行并打开新窗口,登录后将其关闭并返回到它离开的位置。
编辑:向 UIWebView 提供了错误的 URL
在我的应用程序中,我必须在 UIWebView 中加载一个网页,用户可以在其中使用 Facebook 登录。问题是当用户点击登录时,会出现空白页面。
是否可以返回第一页并登录?
网页在 Safari 中完美运行并打开新窗口,登录后将其关闭并返回到它离开的位置。
编辑:向 UIWebView 提供了错误的 URL
我认为适用于 iOS 的 facebook SDK 示例会按照您想要的方式登录。请参考链接:facebook-iOS-SDK-sample:https ://github.com/facebook/facebook-ios-sdk/tree/master/sample/Hackbook
/**
* 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 方法检查 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;
}
SSL 问题?按照 Joanne 的说法,使用 facebook SDK,您可以免费获得大量额外功能,包括通过 facebook 本地应用程序(如果已安装)登录。