Unity Facebook SDK - “FB.API”似乎不保存或加载分数值

时间:2014-04-15 15:00:26

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

我使用官方Facebook SDK为Facebook Canvas创建游戏。尽管直接使用Facebook Unity示例中的代码,但我无法保存或加载分数值。我没有收到任何错误或消息 - 当我尝试检索分数时,总是返回值0。其他所有内容(登录,发布到新闻Feed等)都运行良好 - 只是没有得分管理。此外,这在Unity编辑器和画布本身都会发生。

我将播放器的得分保存为:

public void SaveScore(int _score)
{
    _fbScore = _score;

    var _query = new Dictionary<string, string>();
    _query["score"] = _fbScore.ToString();

    FB.API("/me/scores", Facebook.HttpMethod.POST, delegate(FBResult r) { Util.Log("Result: " + r.Text); }, _query);

    //FB.API ("/me/scores", Facebook.HttpMethod.POST, ScoreSaveCallBack, scoreData);
    _hiScoreText.text = _fbScore.ToString();
}
然后我尝试用这种方法检索得分:

public void GetHighScore()
{
    if (_fbIsInited)
        FB.API ("/app/scores?fields=score,user.limit(20)", Facebook.HttpMethod.GET, GetScoreCallBack);
}

回调方法:

void GetScoreCallBack(FBResult _result)
{
    try 
    {
        List<object> _scoresList = Util.DeserializeScores(_result.Text);
        foreach(object _score in _scoresList)
        {
            var _entry = (Dictionary<string,object>) _score;
            var _user  = (Dictionary<string,object>) _entry["user"];

            string _userId = (string)_user["id"];

            if (string.Equals(_userId, FB.UserId))
            {
                _fbScore = GetScoreFromEntry(_entry);
                _hiScoreText.text = _fbScore.ToString();
                Debug.Log("FB SCORE: + " + _fbScore);
            }
        }
    }
    catch (System.Exception _e)
    {
        Debug.Log(_e.Message);
    }
}

由于返回的分数始终为0,我不知道问题是使用保存还是加载方法。

编辑: 更糟糕的是,当我试图发布分数时,我已经开始出现这些错误了:

You are trying to load data from a www stream which had the following error when downloading.
403 Forbidden
UnityEngine.WWW:get_text()
FBResult:get_Text()
FacebookManager:<SaveScore>m__0(FBResult) (at Assets/Scripts/Facebook/FacebookManager.cs:138)
Facebook.<Start>c__Iterator0:MoveNext()

我没有对代码进行任何更改,他们每次都开始出现!

1 个答案:

答案 0 :(得分:0)

您不应该在此调用中传递数字应用ID,而不是'app'吗?

FB.API ("/123456789/scores?fields=score,user.limit(20)"

您可以在应用主面板上的FacebookDeveloper信息中心找到您的应用代码 - 它是'应用标识符'。

您是否也统一指定了这个号码Facebook | Facebook设置|应用ID?这应该可以解决你的问题。