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. facebookPageURLSafariでURLを開くと、iOS Simulatorうまく機能します
  2. MacのブラウザでURLを開くと、うまく機能します
  3. 白い画面webViewが見えます
  4. facebookPageURLを削除する?v=wallように変更すると?v=info、ページが表示されます(少なくとも空白の画面ではありません)。

1.私のFacebookページは表示されませんunpublished。2.Facebookページの権限をクロスチェックしました。

フェイスブック側で一夜にして何かが変わったのではないかと思います。

ご案内ください。

4

3 に答える 3

0

気まぐれな人Facebookが壁を見る許可を取り除いたようです。別のプロジェクトで同じことを試したときに情報写真の両方を取得していたので、この結論に達しましたが、壁の場合は灰色になりました

したがって、この問題に苦しんでいる、または苦しむ可能性のあるすべての人のための解決策がここにあります。

投稿に応じて辞書を取得しています

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

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

そしてそれは魅力のように機能します。

編集:1 年齢制限のあるページの場合、アプリ内の UIWebView でサポートされていない SSO を認証する必要があります。

もうSSOを使用しないようにダウングレードする必要がありました。そして今、それは何があっても機能します。

ここに追加するだけで、メカニズムにきちんとダウングレードする方法を見つけることができますnon-sso

于 2012-09-27T17:49:54.970 に答える
0

これでしばらく壁に頭をぶつけました。iPhone で同じリクエストと Web ビューを実行すると、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 に答える