【问题标题】:400 Bad Request When Publishing a user's score through Facebook SDK for Unity通过 Facebook SDK for Unity 发布用户分数时出现 400 错误请求
【发布时间】:2014-04-29 06:53:10
【问题描述】:

我正在使用 Unity3D 4.3.4 编辑器和 Facebook SDK for Unity 5.1,它允许在编辑器中进行测试。我能够成功发布我的游戏截图,但我在尝试发布分数时遇到了困难。

我的代码基于这两个示例: Facebook Graph APIFacebook SDK Unity Tutorial .在我检查结果对象的回调方法中,我得到:

400 错误请求

如果我将方法从 POST 更改为 GET,我不会收到错误消息,但也不会发布分数。但至少我知道分数和 access_token 正在发送。

这是 Proxy (Fiddler) 捕获的内容,但我无法捕获 POST,只能捕获 GET。

GET /me/scores?score=89&access_token=CAAIx1MAZCucgBAEh8LvPA5A4JGuUBSAre0WGhQRZC11WHEgFh1KQJNnsbOEjN5ppeqfumfazmS6CIrZCRlJEKNVhU9wtZCJJ66d3sJqBQYyAbSpBnNIrLN70hJ91uJbEXRD1HwITbViziv9ZC1vhLleyKOILrN97DItP1DnGbzP0y0xoKmVA4RN42Shb716EUEY49wZBlsXXXXXX& HTTP/1.1

这是我的代码:

private IEnumerator PostHighScore() 
{
yield return 0;
int highScore;
highScore = (int)LevelGenerator.Instance.distance;
Dictionary<string, string> wwwForm = new Dictionary<string, string>();
wwwForm["score"] = highScore.ToString();
Log("Just about to POST to /me/scores");
FB.API("/me/scores", Facebook.HttpMethod.POST, PostHighScoreCallback, wwwForm);
}

【问题讨论】:

    标签: facebook-unity-sdk


    【解决方案1】:

    我能够解决问题。很难弄清楚,因为 FBResult 类型的结果对象只公开了 3 个属性:一个字符串 Text 变空,一个 Texture2D 形式的 Image 也是空的,一个字符串 Error 只显示“400 Bad Request” ”。我无法拦截代理 Fiddler 上的响应。 有关FBResult的更多信息,请参见此处

    幸运的是,Mono Developer 允许我查看 FBResult 对象的私有部分并扩展数据,我发现了一个名为 responseHeaderString 的属性,它显示了在标题上返回的更详细的错误。

    错误是:

    WWW-Authenticate: OAuth "Facebook Platform" "invalid_request" "(#3) Method allowed only for games"

    从那里我很容易发现我需要在 Facebook 上转到我的应用详细信息并将类别更改为游戏。由于我的 Facebook 是西班牙语的,所以当我创建应用程序时,我选择了娱乐,因为“Juegos”没有列出,你需要滚动并且不明显。

    我想分享这些信息,因为即使您可能面临完全不同的问题,但知道从 Mono Developer 检查 FBResult 对象将帮助您找出响应标头中的原因。

    【讨论】:

    • 我被困在同样的问题上,你的帖子让我不解:D 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2019-05-03
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多