[英]Cannot post user score in Facebook SDK for Unity
我正在開發一款用於Android的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的結構,允許我按位操作它來存儲多個數字。 這些方法屬於類似單一的類,可以在游戲的每個點訪問,並通過場景更改保留。
提前謝謝,任何想法對我都很有價值。
問題已經解決了。 我發送的是64位整數,但Facebook Graph API只能接受32位無符號整數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.