簡體   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