Facebook朋友对话框无法在移动设备上运行

时间:2013-10-16 12:18:55

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

序幕:

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

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

  

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

我再次问它。有一些特定于我的案例的额外信息。

我通过将(302)重定向到以下网址来使用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以重现错误。) < / p>

好的,所以我等了两天,因为我发送了一个bug报告(我发现我实际上并没有以正确的方式做到,但我猜it's already filed before)因为这个错误到Facebook而且似乎有没有修复。在我看来,他们不太可能在这么长的时间内将其打破。除非...

主要问题:

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

非常欢迎解决方案的例子......;)

编辑:

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

2 个答案:

答案 0 :(得分:0)

正如this问题中的 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();
    }
}

答案 1 :(得分:0)

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

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

我认为这是一种耻辱,我仍然想敦促任何想法的人为这个问题开一个新的bug报告。或者对上述报告发表评论。因为这似乎是解决这个问题的一种紧迫感的唯一方法。

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

PS2:即使我的bug报告“声明不会修复文档中的问题”似乎也被忽略了。因此,每天都有新人研究与Facebook连接的移动网络应用程序的可能性,并错误地认为他们可以在移动设备上的Web应用程序中使用“facebook friend dialog”。我希望他们在研究期间能找到这个页面,并避开这个假设。