2016-04-13 6 views
1

Ich arbeite in einem Unity3D-Spiel für Android, die das Facebook Unity SDK verwendet, um die Ergebnisse zu speichern, abrufen und Bestenlisten, aber ich habe Probleme gefunden und ich kann nicht herausfinden Grund.Benutzerbewertung in Facebook SDK für Unity nicht

Ich verwende:

  • Unity Pro 5.3.3f1.
  • Facebook Unity SDK 7.4.0.
  • Grafik API 2.5.

Ich postete den Code, der meiner Meinung nach Probleme macht. Es funktioniert manchmal, aber es scheitert hauptsächlich daran, dass es keine erforderlichen Berechtigungen oder einen Fehler "nicht gefunden" gibt.

Das Spiel ist auf der Facebook-Entwickler-Webseite korrekt konfiguriert.

-

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; 
} 

-

Kommentare über den Code: Der FacebookScore Typ ist eine Struktur, die eine lange verkapselt, und ermöglicht es mir, es mehr als eine Nummer zu speichern, zu manipulieren bitweise. Diese Methoden gehören zu einer Singleton-ähnlichen Klasse, die an jedem Punkt des Spiels zugänglich ist und durch Szenenwechsel erhalten bleibt.

Jede Idee wäre sehr wertvoll für mich, danke im Voraus.

+0

rein eine Anmerkung, verwenden viele Leute die prime31-Plugins, um Dinge mit FB zu erledigen. – Fattie

+0

Das Problem ist gelöst. Ich habe eine 64-Bit-Ganzzahl gesendet, aber die Facebook-Grafik-API kann nur eine 32-Bit-Ganzzahl ohne Vorzeichen akzeptieren. – lmgginspace

+0

sollten Sie das als Antwort verwenden, es wird Menschen helfen. – Fattie

Antwort

0

Das Problem ist gelöst. Ich habe eine 64-Bit-Ganzzahl gesendet, aber die Facebook-Grafik-API kann nur eine 32-Bit-Ganzzahl ohne Vorzeichen akzeptieren.