Facebook好友对话框在移动设备上无法使用

4

前言:

我遇到了和之前提出问题(FB移动端添加好友对话框无法使用)中描述的相同的问题。

但是,除了以下评论之外,没有透露任何真正解决此问题的方法:

“它开始工作了……我什么也没改。”[...](@dinodsaurus

因此,我再次提出这个问题并提供一些特定于我的情况的额外信息。

我正在使用 Facebook 好友对话框,通过重定向(302)到一个 URL,例如:(https://www.facebook.com/dialog/friends/?id=3500194&app_id=531355753613866&redirect_uri=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F19403197%2Ffacebook-friend-dialog-not-working-on-mobile%23success)。
上述 URL 在桌面浏览器和移动浏览器上都可以正常工作。
Facebook在使用移动设备/浏览器时,会自动将前面提到的URL重定向到他们的m.facebook.com域名,从而呈现对话框的display=touch版本(参见对话框参考)。
这一切似乎非常正常(实际上是期望的行为)。
但是...当我确认想要发送好友请求时,只有在使用移动设备时才会出现问题。
在我的移动设备上确认后,我得到的消息是:

"抱歉,出了点问题。

我们正在尽快解决。"

请确保使用手机浏览器打开上面的链接或直接访问m.facebook.com使用this link来复制错误。

好的,我现在已经等了两天,自从我向Facebook发送了一个错误报告(我发现我实际上没有按正确的方式操作,但我猜想它已经被提交了),似乎没有解决办法。对我来说,这似乎不太可能会让他们把这个问题留下很长时间。除非...

主要问题:

所以我的问题实际上是: 有没有人知道Facebook可能不修复这个错误的任何原因?如果有,是否有任何方法可以在仍然使用合理的移动设备显示样式的情况下绕过此错误?

非常欢迎提供解决方案... ;)

编辑:

我刚刚为这个错误提交了一个Repro。如果您能够重现我在这里描述的错误,请自行在https://developers.facebook.com/bugs/309157325894924上提交一个Repro,以使此错误获得更高的优先级。

2个回答

0

Wimaggucthis问题中回答的,您可以尝试以下方法:

潜在的问题在于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();
    }
}

感谢您的回答。很抱歉我回复晚了,但我正在寻找一种在仅限Web应用程序中使其工作的方法。因此,不使用Java和Android ;) 实际上,我只能使用PHP、HTML和JavaScript。 - Tommy Bravo

0

Facebook于2013年12月7日决定该漏洞没有优先级,并将状态更改为“不修复”。

原始漏洞报告被标记为https://developers.facebook.com/x/bugs/309157325894924/的重复。有关更多信息,请参见此页面。

我认为这很遗憾,我仍然希望敦促任何持相同看法的人为该问题开启新的漏洞报告。或在上述报告中留下评论。因为这似乎是创造一些紧迫感以解决这个问题的唯一方法。

附注:由于我的评论最近被删除,我建议使用漏洞报告。

附注2:即使我的漏洞报告“在文档中声明不修复问题”,似乎也被忽略了。因此,每天都会有新人研究连接到Facebook的移动Web应用程序的可能性,并错误地认为他们可以在移动设备上的Web应用程序中使用“Facebook好友对话框”。我希望他们在研究期间能找到这个页面,并避免那种假设。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接