3

大家好,我正在尝试使用 Facebook Api 发送通知,我这样做了:

Bundle params = new Bundle();
params.putString("to", 535465135216);
params.putString("message", "Prova Prova A A");
facebook.dialog(Answer.this, "apprequests", params, new DialogListener() {
                public void onComplete(Bundle values) {
                                    Toast toast = Toast.makeText(getApplicationContext(), "Done",
                                            Toast.LENGTH_SHORT);
                                    toast.show();
                                }

                                @Override
                public void onFacebookError(FacebookError error) {
                                    Toast.makeText(getApplicationContext(), "Facebook Error: " + error.getMessage(),
                                            Toast.LENGTH_SHORT).show();
                                }

                                @Override
                public void onCancel() {
                                    Toast toast = Toast.makeText(getApplicationContext(), "App request cancelled",
                                            Toast.LENGTH_SHORT);
                                    toast.show();
                                }

                                @Override
                public void onError(DialogError e) {
                                    // TODO Auto-generated method stub

                                }
                            });

当我尝试运行这个项目时,一切正常,它显示 Toast“完成”,但在我的 Facebook 个人资料中没有出现通知。

我应该更改 Facebook 应用程序的设置吗?

谢谢你 :)

4

1 回答 1

10

很多时候,邀请已成功发送但未向用户显示,这是因为未在应用程序设置中设置画布 url。

canvas url 参数在处理应用程序邀请/请求时至关重要,因为当用户对邀请采取操作(这意味着单击“接受”)时,他会被重定向到您的应用程序。如果没有提供画布 url,则邀请实际上会失效,因为 Facebook 在用户点击后无法将其发送到哪里!

您正在开发一个 android 应用程序,因此您甚至可能不需要画布 url,但为了使邀请正常工作,您必须指定一个。


另一种可能性是,当您的应用程序仍设置为“沙盒模式”时,您正在向未在应用程序的“角色”中定义的用户发送邀请/请求。只要您的应用程序仍处于沙盒模式,它对“角色”部分中未定义的任何人基本上是不可见的。这种沙盒模式允许开发人员开发和测试他们的应用程序,而不必担心在 Facebook 上公开它。因此,您将能够发送邀请,但如果您将邀请发送给未定义且未参与应用程序开发的人,她/他将根本不会收到邀请(即使该操作看起来像是成功的)。

于 2012-08-09T14:28:46.750 回答