1

我在这个问题上苦苦挣扎已经太久了。经过大量搜索后,我决定在这里发布一个问题。

我的应用程序做什么

  1. 拍摄照片
  2. 上传页面墙上的照片
  3. 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;

设想

  1. facebookPageURL如果我在 Safari 中打开 urliOS Simulator效果很好
  2. 如果我在 Mac 上的任何浏览器中打开 url,它运行良好
  3. webView我看到一个白屏
  4. 如果我将facebookPageURL要删除的更改?v=wall?v=info我仍然可以看到该页面。(至少不是空白屏幕)。

注意 1. 我的 facebook 页面不是unpublished并且是可见的。2. 我已经交叉检查了 facebook 页面的权限。

我怀疑 Facebook 方面一夜之间发生了一些变化。

请指导。

4

3 回答 3

0

似乎曾经反复无常的人Facebook已经取消了查看墙壁的权限。我得出了这个结论,因为当我在单独的项目中尝试相同的事情时,我得到了信息照片,但是对于墙壁,它变成了灰色

因此,这里为所有遭受或可能遭受此问题的人提供解决方案。

我收到一本字典来回应这篇文章

{"id":"<imge_id>","post_id":"<post_id>"}

http://www.facebook.com/photo.php?fbid=<imge_id>

它就像一个魅力。

编辑:1 刚才我发现了一个问题对于有年龄限制的页面,我们需要在我的应用程序中验证哪个 SSO 不支持 UIWebView。

我不得不降级为不再使用 SSO。现在它无论如何都有效。

只需在此处添加,您就可以找到如何巧妙地降级为non-sso机制。

于 2012-09-27T17:49:54.970 回答
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"];
    }
}
于 2012-11-03T10:58:54.570 回答
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"]];



        });
    });

希望这可以帮助一些人。

于 2013-10-25T22:57:53.830 回答