Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在本机ios6 UIWebView中登录Facebook Javascript(适用于SAFARI)_Javascript_Facebook_Ios6_Sdk_Uiwebview - Fatal编程技术网

在本机ios6 UIWebView中登录Facebook Javascript(适用于SAFARI)

在本机ios6 UIWebView中登录Facebook Javascript(适用于SAFARI),javascript,facebook,ios6,sdk,uiwebview,Javascript,Facebook,Ios6,Sdk,Uiwebview,我正在寻找一个关于使用UIWebView在本机iOS 6应用程序上运行FB.login()的解决方案。我已经调试了很多,还没有找到解决方案 问题是:当调用fb.login时,我的应用程序会打开一个新的UIWebView来处理它(就像safari打开一个新选项卡一样)。Facebook登录会出现,但当它登录时,会出现一个空白页面,并且不会发生任何事情(无论是在根UIWebView中还是在根UIWebView中)。。。有人知道完成fb.login js流的解决方案吗 谢谢大家 附言: 没有帮助的链接

我正在寻找一个关于使用UIWebView在本机iOS 6应用程序上运行FB.login()的解决方案。我已经调试了很多,还没有找到解决方案

问题是:当调用fb.login时,我的应用程序会打开一个新的UIWebView来处理它(就像safari打开一个新选项卡一样)。Facebook登录会出现,但当它登录时,会出现一个空白页面,并且不会发生任何事情(无论是在根UIWebView中还是在根UIWebView中)。。。有人知道完成fb.login js流的解决方案吗

谢谢大家

附言: 没有帮助的链接--

成功了

这有点像黑客攻击,但在iOS 6的UiWebView上登录js facebook sdk终于可以工作了

如何做到这一点?这是一个纯JS+Facebook JS SDK+UIWebView委托处理函数解决方案

JS-第一步)

登录按钮(用于连接facebook)调用此函数示例,将触发Face JS login/oauth对话框:

function loginWithFacebookClick(){

FB.login(function(response){
    //normal browsers callback 
});

}
JS-第二步)

每次用户加载网页(在FB.init()之后)时添加authResponseChange侦听器以捕获用户的连接状态:

FB.Event.subscribe('auth.authResponse.Change', function(response){
//UIWebView login 'callback' handler
var auth = response.authResponse;
if(auth.status == 'connected'){
    //user is connected with facebook! just log him at your webapp
}
});
通过应用程序的UIWebView委托函数,您可以处理facebook oauth响应

目标C(第三步)

因此,当“重定向”用户到最后加载的页面时,第二步是在facebook登录对话框中处理用户操作

如果我回答得太快,请问我!
希望有帮助。

这也适用于登录和评论的社交插件。但是,在注册过程中使用Facebook登录的网站,这并不能解决问题,因为你是在空白页面上重定向到上一页,而不是在Facebook应用程序中设置的重定向url上。你必须从这个链接获得信息:Hi@pinthor,到底在做什么?@baquiax,这是在iOS 6中(大约3年前)。我记得,这个函数只是从浏览器中调用history.back():D@pinthor我知道。这只是一个疑问
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *url = [[request URL] absoluteString];

//when user status == connected (has a access_token at facebook oauth response)
if([url hasPrefix:@"https://m.facebook.com/dialog/oauth"] && [url rangeOfString:@"access_token="].location != NSNotFound)
{
    [self backToLastPage];
    return NO;
}

return YES;
}

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

NSString *url = [[webView.request URL] absoluteString];

if([url hasPrefix:@"https://m.facebook.com/dialog/oauth"])
{
    NSString *bodyHTML = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];

    //Facebook oauth response dead end: is a blank body and a head with a script that does 
    //nothing. But if you got back to your last page, the handler of authResponseChange
    //will catch a connected status if user did his login and auth app
    if([bodyHTML isEqualToString:@""])
    {
        [self backToLastPage];
    }
}

}