我在使用Facebook Unity SDK的Unity3D游戏中工作,使用Facebook Unity SDK存储,检索分数并制作排行榜,但我发现了问题,我无法弄清楚原因。
我正在使用:
我发布了我认为制造麻烦的代码。它有时会起作用,但主要是因为没有所需的权限或者没有找到"未找到"错误。
在Facebook开发者网页中正确配置了游戏。
-
public void RequestSetScore(FacebookScore facebookScore)
{
if (FacebookManager.Instance.accessToken == null)
{
FacebookManager.Instance.OnRequestSetScoreError("Application has not logged in to Facebook yet.");
return;
}
if (this.PermissionIsGranted("publish_actions"))
{
string requestUri;
requestUri = string.Format("{0}/scores?score={1}",
FacebookManager.Instance.accessToken.UserId,
facebookScore.ScoreValue.ToString());
FB.API(requestUri, HttpMethod.POST,
scoreSetRequestresult =>
{
// Esto se ejecuta cuando la respuesta se ha recibido, no inmediatamente
if (scoreSetRequestresult.Error != null)
{
// This is an event of my class
FacebookManager.Instance.OnRequestSetScoreError(scoreSetRequestresult.Error);
}
else
{
// This is an event of my class
FacebookManager.Instance.OnRequestSetScoreSuccess();
}
}
);
}
else
{
// Pedir permisos para publicar puntuaciones
FB.LogInWithPublishPermissions(FacebookManager.Instance.publishPermissions,
permissionRequestresult =>
{
// Esto se ejecuta cuando la respuesta se ha recibido, no inmediatamente
if (permissionRequestresult.Error != null)
{
string requestUri;
requestUri = string.Format("{0}/scores?score={1}",
FacebookManager.Instance.accessToken.UserId,
facebookScore.ScoreValue.ToString());
FB.API(requestUri, HttpMethod.POST,
scoreSetRequestresult =>
{
// Esto se ejecuta cuando la respuesta se ha recibido, no inmediatamente
if (scoreSetRequestresult.Error != null)
{
// This is an event of my class
FacebookManager.Instance.OnRequestSetScoreError(scoreSetRequestresult.Error);
}
else
{
// This is an event of my class
FacebookManager.Instance.OnRequestSetScoreSuccess();
}
}
);
}
else
{
// This is an event of my class
FacebookManager.Instance.OnRequestSetScoreError(permissionRequestresult.Error);
}
}
);
}
}
// Métodos auxiliares
private bool PermissionIsGranted(string permission)
{
AccessToken token = Facebook.Unity.AccessToken.CurrentAccessToken;
foreach (string grantedPermission in token.Permissions)
{
if (grantedPermission == permission)
return true;
}
return false;
}
-
关于代码的评论:FacebookScore类型是一个封装long的结构,允许我按位操作它来存储多个数字。这些方法属于类似单身的类,可以在游戏的每个点访问,并通过场景更改保留。
任何想法都对我很有价值,谢谢你。
答案 0 :(得分:0)
问题解决了。我发送的是64位整数,但Facebook Graph API只能接受32位无符号整数。