【问题标题】:Unity Facebook SDK: AppRequest Error 400 Bad RequestUnity Facebook SDK:AppRequest 错误 400 错误请求
【发布时间】:2014-09-11 15:44:27
【问题描述】:

我一直在构建一个用于 facebook unity sdk 的社交管理器类,而不是 prime[31] 版本,只是你可以从 facebook 获得的版本:https://developers.facebook.com/docs/unity/downloads

我正在构建它以使用 Unity3D 引擎同时用于 Android 和 IOS。

在我尝试与经理实现 App-request 之前,一切都很顺利。

我收到一个“错误 400 错误请求”,除了错误消息之外没有太多其他内容,所以我希望这里的任何人都可以帮助我解决这个问题:

调用应用请求的代码:

void RequestAskfor(string requestTitle, string requestMessage, string objectID, string Quantity)
{
    string[] friendIDs = new string[CurrentUser.FriendList.Count];

    for (int i = 0; i < friendIDs.Length; i++)
    {
        friendIDs[i] = CurrentUser.FriendList[i].UserID;
    }

    string data = "{\"type\":\"AskFor\",\"item\":\"{\"objectID\":\"" + objectID + ",\"quantity\":\"" + Quantity + "}}";

    FB.AppRequest(requestMessage, Facebook.OGActionType.AskFor, objectID, null, null, null, data, requestTitle, RequestCallback);
}

这是应该测试它是否有效的 gui 按钮:

if(GUI.Button(new Rect(300, 300, 300, 300), "Apprequest Test"))
{
    RequestAskfor("Giv mig mad", "Giiiiv miiiig maaaaaad", "food", "1");
}

这是我用来验证应用程序的权限:

if (GUI.Button(new Rect(100, 200, 125, 35), "Login!"))
{
    Login("email,publish_actions,public_profile,user_friends,invitable_friends");
}

上面的所有代码都有效(在一定程度上),我什至能够获得“邀请请求屏幕”

但是,当我在邀请请求屏幕上按 OK 时,我收到此错误消息和来自 API 的外部调用:

错误信息:

400 Bad Request
UnityEngine.Debug:LogError(Object)
FbDebug:Error(String)
Facebook.FallbackData:JSFallback(String)
Facebook.AsyncRequestDialogPost:CallbackWithErrorHandling(FBResult)
Facebook.<Start>c__Iterator0:MoveNext()

外部调用:(有点太大,无法正确格式化)

    External Call: fbUi("{\"message\":\"Giiiiv 
    miiiigmaaaaaad\",\"action_type\":\"askfor\",\"   
    object_id\":\"food\",\"data\":\"{\\\"type\\\":\\\"AskFor\\\",\\\"item\\\":\\\"
    {\\\"objectID\\\":\\\"food,\\\"quantity\\\":\\\"1}}\",\"title\":\"Giv mig 
    mad\",\"app_id\":\"339275729572840\",\"locale\":\"en_US\",
    \"method\":\"apprequests\"}", "1");
    UnityEngine.Application:ExternalCall(String, Object[])
    Facebook.CanvasFacebook:JSFallbackUI(String, Dictionary`2, FacebookDelegate)
    Facebook.FallbackData:JSFallback(String)
    Facebook.AsyncRequestDialogPost:CallbackWithErrorHandling(FBResult)
    Facebook.<Start>c__Iterator0:MoveNext()

如果您想仔细查看代码,请查看项目中仅有的两个脚本的链接:https://www.dropbox.com/s/5htdry9gd4bhwip/SocialManager.zip?dl=0

我一直在检查 FB.AppRequest 方法的文档,并试图找到有类似问题的人,但到目前为止我还没有能够解决这个问题(显然)。

所有其他代码都可以正常工作,但目前困扰我的只是 AppRequests。

可能还应该提到,这段代码还没有完成,看起来很草率。但是提前感谢你们可以给我的任何帮助!

【问题讨论】:

  • 对我来说也一样。回调不会调用,但会发送请求。

标签: facebook facebook-graph-api unity3d facebook-unity-sdk facebook-app-requests


【解决方案1】:

对象 ID 必须引用实际的 OpenGraph 对象(通常是数字 ID)。以下是创建它们的方法。

https://developers.facebook.com/docs/games/requests/v2.1#creatingobject

【讨论】:

    【解决方案2】:

    尝试在 MonoDevelop 中调试您从 Facebook 返回的结果,详细信息 here。您将在其中收到一条正确的错误消息,这让您有更多的工作要做。

    【讨论】:

    • 你好彼得,我试过你的建议。我启动了monodevelop,按照您的指示进行操作,但它仍然没有给我任何帮助。 Monodevelop 甚至不会响应我设置的断点。我已经在我的项目中使用 UnityVS,也许这与 monodevelop 冲突?或者我可以用unityVS做些什么?此外,甚至没有启动对应用程序请求的回调。我只是得到错误和外部调用,没有别的。不过感谢您的回复。
    • 我不知道你会如何在 unityVS 中做到这一点,抱歉。如果你能找到一种方法来查看 Facebook 的原始回复,那可能会有更多信息。可能。
    【解决方案3】:

    我实际上得到了同样的错误。问题是您的应用程序详细信息在 Facebook 端不正确。转到我在 Facebook 上的应用详细信息并将类别更改为游戏。

    我希望这对你有用:)。

    【讨论】:

    • 我试图看一看,但它已经设置为游戏。 (Image)
    【解决方案4】:

    感谢大家的回答!

    我设法通过进入对象浏览器工具并找到正确的 objectID 来解决这个问题,这就是给我带来错误的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多