繁体   English   中英

无法在Facebook SDK for Unity中发布用户分数

[英]Cannot post user score in Facebook SDK for Unity

我正在开发一款用于Android的Unity3D游戏,它使用Facebook Unity SDK来存储,检索分数并制作排行榜,但我发现了问题,我无法弄清楚原因。

我正在使用:

  • Unity Pro 5.3.3f1。
  • Facebook Unity SDK 7.4.0。
  • 图API 2.5。

我发布了我认为制造麻烦的代码。 它有时可以工作,但主要是因为没有所需的权限或声明“未找到”错误而失败。

游戏在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM