Ios Facebook和G+;使用UIWebView登录
我的iOS应用程序有一个在Ios Facebook和G+;使用UIWebView登录,ios,objective-c,facebook,uiwebview,Ios,Objective C,Facebook,Uiwebview,我的iOS应用程序有一个在UIWebView中设置的登录页面。它还拥有Facebook和G+登录。我可以让正常的登录界面工作,好吗。但当我用Facebook和G+这样做时,我遇到了问题。我假设原因是点击按钮弹出的新窗口。 有没有办法不用手动登录就能解决这个问题?使用原生Facebook和G+登录会容易得多。您试图完成的任务比使用本机登录要复杂得多 如果出于某种原因,您真的必须在UIWebView中执行此操作,则必须实施以下策略: -(BOOL)webView:(UIWebView *)webVi
UIWebView
中设置的登录页面。它还拥有Facebook和G+登录。我可以让正常的登录界面工作,好吗。但当我用Facebook和G+这样做时,我遇到了问题。我假设原因是点击按钮弹出的新窗口。
有没有办法不用手动登录就能解决这个问题?使用原生Facebook和G+登录会容易得多。您试图完成的任务比使用本机登录要复杂得多 如果出于某种原因,您真的必须在UIWebView中执行此操作,则必须实施以下策略:
-(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];
}
- 重写
-(BOOL)webView:(UIWebView*)webView应加载请求:(NSURLRequest*)请求导航类型:(UIWebViewNavigationType)导航类型
协议的方法UIWebViewDelegate
- 在您的实现中,您应该在另一个模式UIWebView中打开登录界面,并在那里处理登录事件,在取消该模式视图后,如果登录成功,则继续应用程序流
-(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还必须知道模式何时被取消(可以通过协议或其他方式完成),然后检查登录状态,如果成功则继续
所以,正如我所说的,最好使用本机登录。请详细说明。。我不明白你想说什么do@EICaptain有一个“登录”按钮,是我本机实现的。它连接到UIWebView。UIWebView加载一个有两个按钮的网页——“Facebook登录和Google+登录”。这完全是在网络上完成的。但是UIWebView不能正确响应这些点击。也就是说,它不会通过Facebook或Google+登录。当您使用iOS Safari浏览器打开登录页面时,登录页面是否工作?@SidharthJDev正如Jehna1所提到的,当您在Safari中打开时,登录页面是否工作?如果这样做有效,那么您需要在AppDelegate上检查URL是否正在
-(BOOL)应用程序:(UIApplication*)应用程序openURL:(NSURL*)URL源应用程序:(NSString*)源应用程序注释:(id)注释
是的,它在safari中确实有效