【问题标题】:Facebook friend dialog not working on mobileFacebook朋友对话框在移动设备上不起作用
【发布时间】:2013-10-16 12:18:55
【问题描述】:

序幕:

我遇到的问题与之前提出的问题 (FB add friend dialog on mobile doesnt work) 中描述的问题大致相同。

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

“它开始工作了......我没有改变任何东西。” [...] (@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)

上述网址在桌面和移动浏览器上都可以正常工作。

Facebook 在使用移动设备/浏览器时自动将the before mentioned URL 重定向到他们的m.facebook.com 域。这将呈现对话框的 display=touch 版本 (see dialog reference)。

这一切看起来都很正常(实际上是想要的行为)。

但是... 当我确认我要发送好友请求时出错了。 只有在我使用移动设备确认时

我在手机上确认后收到的消息是:

“抱歉,出了点问题。

我们正在努力尽快解决这个问题。”

(请务必使用手机浏览器获取上述链接,或使用this link 直接访问m.facebook.com 以重现错误。

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

主要问题:

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

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

编辑:

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

【问题讨论】:

    标签: facebook facebook-graph-api mobile web mobile-browser


    【解决方案1】:

    正如 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();
        }
    }
    

    【讨论】:

    • 感谢您的回答。对于迟到的回复,我很抱歉,但我正在寻找一种方法来使这项工作在纯网络应用程序中发挥作用。所以 没有 java 也没有 android ;) 事实上我只能使用 PHP、HTML 和 javascript。
    【解决方案2】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多