4

序幕:

我遇到的问题与之前提出的问题( FB 在移动设备上添加好友对话框不起作用)中描述的问题大致相同。

但是由于除了评论之外没有真正解决这个问题的方法:

“它开始工作了......我没有改变任何东西。” [...](@dinodsaurus

我再问一遍。有一些针对我的案例的额外信息。

我通过将 (302) 重定向到如下 URL 来使用 facebook 朋友对话框:( 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使用此链接访问以重现错误。)

好的,所以我等了两天,因为我向 Facebook 发送了错误报告(我发现我实际上没有以正确的方式执行此操作,但我猜它之前已经提交过)针对这个错误到 Facebook 并且似乎没有修复。在我看来,他们不太可能让这个坏了这么长时间。除非...

主要问题:

所以我的问题实际上是: 有人知道 Facebook 可能没有修复这个错误的任何原因吗?如果是这样,有什么办法可以解决这个问题,同时仍然为移动设备使用合理的显示样式?

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

编辑:

我刚刚为这个错误提交了一份 Repro 。如果您可以重现我在此处描述的错误,请自行在以下位置提交 Repro:https ://developers.facebook.com/bugs/309157325894924 ,以便给予此错误更多优先级。

4

2 回答 2

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 回答
0

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

原始错误报告被标记为https://developers.facebook.com/x/bugs/309157325894924/的副本。有关更多信息,请参阅此页面。

我认为这是一种耻辱,我仍然想敦促任何有同样想法的人为此问题打开一个新的错误报告。或对上述报告发表评论。因为这似乎是为解决这个问题创造一些紧迫感的唯一方法。

PS:我推荐一个错误报告,因为我的评论最近被删除了。

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

于 2014-03-11T12:57:53.853 回答