我遇到与前面提到的问题(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,以便更好地优先处理此错误。
答案 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”。我希望他们在研究期间能找到这个页面,并避开这个假设。