4

プロローグ:

以前の質問で説明したのとほぼ同じ問題があります (モバイルでの FB 友達追加ダイアログが機能しません)。

しかし、コメント以外に知られているこの問題に対する実際の解決策はありません。

「動き始めました...何も変更しませんでした。」[...] ( @dinodsaurus )

もう一度聞いてみます。私の場合に固有の追加情報がいくつかあります。

次のような URL に (302) リダイレクトすることで、Facebook の友達ダイアログを使用しています: ( 2Fquestions%2F19403197%2Ffacebook-friend-dialog-not-working-on-mobile%23success )

上記の URL は、デスクトップとモバイル ブラウザーの両方で正常に機能します。

Facebookは、モバイル デバイス/ブラウザーの使用中に、前述の URLをドメインに自動的にリダイレクトします。これにより、ダイアログのバージョンがm.facebook.comレンダリングされます (ダイアログ リファレンスを参照)。display=touch

これはすべて非常に正常に思えます (そして実際に必要な動作です)。

だけど…友達申請をしたいのに確認したらうまくいかない。そして携帯で確認した時だけ。

携帯電話で確認した後に表示されるメッセージは次のとおりです。

「申し訳ありませんが、問題が発生しました。

できる限り早く直すために、取り組んでいます。"

(携帯電話のブラウザを使用して上記のリンクを表示するか、このリンクm.facebook.comを使用して直接アクセスしてエラーを再現してください。)

OK、このエラーのバグレポートを Facebook に送信してから 2 日間待ちました (実際には正しい方法で行っていないことがわかりましたが、以前に報告されていたと思います)。修正はないようです。また、彼らがこれをそれほど長い間壊れたままにしておく可能性は低いと私には思えます. そうでもなければ...

主な質問:

だから私の質問は実際: Facebook がおそらくこのエラーを修正しない理由を知っている人はいますか? もしそうなら、モバイルデバイスに適切な表示スタイルを使用しながら、これを回避する方法はありますか?

ソリューションの例は大歓迎です... ;)

編集:

このバグの Repro を提出しました。ここで説明したエラーを再現できる場合は、https ://developers.facebook.com/bugs/309157325894924 で再現ファイルを提出して、このバグをより優先してください。

4

2 に答える 2

0

Facebook は、このバグには優先度がないと判断し、2013 年 12 月 7 日にステータスを「修正しない」に変更しました。

元のバグ レポートは、 https://developers.facebook.com/x/bugs/309157325894924/の複製としてマークされました。詳細については、このページを参照してください。

これは残念なことだと思いますが、同じことを考えている人には、この問題について新しいバグレポートを開くよう強く勧めたいと思います。または、上記のレポートにコメントを残してください。これが、この問題を解決するための切迫感を生み出す唯一の方法であるように思われるためです。

PS: 最近コメントが削除されたので、バグレポートをお勧めします。

PS2: 「ドキュメントで問題を修正しないと述べている」という私のバグレポートでさえ、無視されているようです。そのため、新しい人々は毎日、Facebook に接続するモバイル Web アプリの可能性を調査し、モバイル デバイスの Web アプリで "Facebook の友達ダイアログ" を使用できると誤って思い込んでいます。私の希望は、彼らが調査中にこのページを見つけて、その思い込みから離れることです。

于 2014-03-11T12:57:53.853 に答える
0

この質問でWimaggucが答えたように、これを試すことができます:-

根本的な問題は、Facebook API がまだすべての表示タイプに対応しておらず、友達ダイアログをモバイル ディスプレイに表示できないことです。

protected static String DIALOG_BASE_URL = "https://m.facebook.com/dialog/";
protected static String DIALOG_BASE_URL_FOR_MISSING_SCREENS = "https://www.facebook.com/dialog/";

public void dialog(Context context, String action, Bundle parameters,
        final DialogListener listener) {

    boolean missingScreen = action.contentEquals("friends") ? true : false;

    String endpoint = missingScreen ? DIALOG_BASE_URL_FOR_MISSING_SCREENS : DIALOG_BASE_URL;
    endpoint += action;

    parameters.putString("display", missingScreen ? "popup" : "touch");
    parameters.putString("redirect_uri", REDIRECT_URI);

    if (action.equals(LOGIN)) {
        parameters.putString("type", "user_agent");
        parameters.putString("client_id", mAppId);
    } else {
        parameters.putString("app_id", mAppId);
    }

    if (isSessionValid()) {
        parameters.putString(TOKEN, getAccessToken());
    }
    String url = endpoint + "?" + Util.encodeUrl(parameters);
    if (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET)
            != PackageManager.PERMISSION_GRANTED) {
        Util.showAlert(context, "Error",
                "Application requires permission to access the Internet");
    } else {
        new FbDialog(context, url, listener).show();
    }
}
于 2013-10-27T17:01:38.410 に答える