我使用官方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()
我没有对代码进行任何更改,他们每次都开始出现!
答案 0 :(得分:0)
您不应该在此调用中传递数字应用ID,而不是'app'吗?
FB.API ("/123456789/scores?fields=score,user.limit(20)"
您可以在应用主面板上的FacebookDeveloper信息中心找到您的应用代码 - 它是'应用标识符'。
您是否也统一指定了这个号码Facebook | Facebook设置|应用ID?这应该可以解决你的问题。