我已经太久了,我正在努力解决这个问题。经过大量搜索,我决定在这里发一个问题。
我的应用
UIWebview
显示Facebook页面墙4天前一切都按预期工作:)突然出现问题:(
代码
NSString *facebookPageURL =@"https://m.facebook.com/pages/<myPageName>/<myPageID>?v=wall"
UIWebView *webView = [[UIWebView alloc] initWithFrame:kAppFrame];
[webView setUserInteractionEnabled:NO];
[webView setBackgroundColor:[UIColor clearColor]];
webView.delegate = self;
[webView setHidden: YES];
NSURL *url = [NSURL URLWithString:[facebookPageURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] relativeToURL:[NSURL URLWithString:@"http://login.facebook.com"]];
NSMutableURLRequest *request = nil;
if(url)
request = [NSMutableURLRequest requestWithURL:url];
[webView loadRequest:request];
[self.view addSubview:webView];
[webView reload];
[self.view bringSubviewToFront:webView];
webView = nil;
方案
facebookPageURL
的Safari中打开网址iOS Simulator
,则效果很好webView
我看到白屏 facebookPageURL
以删除?v=wall
至?v=info
,我仍然可以看到该页面。(至少不是空白屏幕)。 注意
1.我的Facebook页面不是unpublished
并且可见。
2.我已经交叉检查了facebook页面的权限。
我怀疑Facebook一夜之间发生了一些变化。
请指导。
答案 0 :(得分:0)
似乎永远变幻莫测的Facebook
已经取消了查看墙的权限。我得出了这个结论,因为当我在单独的项目中尝试相同的事情时我得到 info 和照片但是对于 wall 它变成了灰色< / p>
因此,解决那些遭受或可能遭受痛苦的人会形成这个问题。
我收到一本字典以回复帖子
<强> {"id":"<imge_id>","post_id":"<post_id>"}
强>
<强> http://www.facebook.com/photo.php?fbid=<imge_id>
强>
它就像一个魅力。
修改:1 强> 刚才我发现了一个问题 对于有年龄限制的页面,我们需要在我的应用程序中验证哪个SSO不支持UIWebView。
我不得不降级到不再使用SSO了。现在它无论如何都有效。
只需添加here,您就可以找到如何整齐地降级为non-sso
机制。
答案 1 :(得分:0)
我认为它会帮助你
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([(NSMutableURLRequest *)request respondsToSelector:@selector(setValue:forHTTPHeaderField:)]) {
[(NSMutableURLRequest *)request setValue:@" Safari/537.1" forHTTPHeaderField:@"User_Agent"];
}
}
答案 2 :(得分:0)
我把头靠在墙上一段时间了。 iPhone上的相同请求和webview将提取Facebook页面,但会在iPad上显示空白页面。更改用户代理无法解决问题。
我能够通过使用stringWithContentsOfURL拉下我正在寻找的页面的HTML然后手动将HTML加载到webview中来解决它
如果你可以帮助它,你不想从你的主线程调用[NSString stringWithContentsofURL,因为它会阻止你的线程直到结果返回。这是我在后台运行它并更新我已经创建并添加到我的子视图“facebookWebView”的UIWebView的解决方案:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *rawHTML = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.facebook.com/link.to.your.page.on.facebook"] encoding:NSASCIIStringEncoding error:nil];
dispatch_async(dispatch_get_main_queue(), ^(void) {
[facebookWebView loadHTMLString:rawHTML baseURL:[NSURL URLWithString:@"http://www.facebook.com"]];
});
});
希望这可以帮助一些人。