2016-04-13 14 views
1

için Facebook Unity3D oyununda Android Unity3D oyununu depolamak, puanları almak ve skor tabloları oluşturmak için Facebook Unity SDK'sini kullanıyorum ama problemleri buldum ve anlayamıyorum. sebep.Facebook'taki kullanıcı puanı gönderilemiyor Unity

kullanıyorum:

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

Sanırım sorun olduğunu düşündüğüm kodu yayınladım. Bazen çalışır, ancak gerekli izinlere sahip olmama veya "bulunamadı" hatasını belirterek başarısız olur.

Oyun, Facebook geliştiricileri web sayfasında doğru bir şekilde yapılandırılmıştır. FacebookScore tipi uzun kapsüller ve beni birden fazla numara saklamak için Bitsel manipüle sağlayan bir yapıdır:

- -

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

kodu hakkında

yorumlar. Bu yöntemler, oyunun her noktasında elde edilebilen ve sahne değişiklikleri ile korunan tekton benzeri bir sınıfa aittir.

Herhangi bir fikir benim için çok değerli olurdu, şimdiden teşekkürler.

+0

sadece bir not, birçok kişi prime31 eklentileri kullanarak, FB ile şeyler yapmak. – Fattie

+0

Sorun çözüldü. 64 bitlik bir tamsayı gönderiyordum, ancak Facebook Graph API'si sadece 32 bit işaretsiz bir tamsayı kabul edebilir. – lmgginspace

+0

bir cevap olarak, bu insanlar yardımcı olacaktır. – Fattie

cevap

0

Sorun çözüldü. 64 bitlik bir tamsayı gönderiyordum, ancak Facebook Graph API'si sadece 32 bit işaretsiz bir tamsayı kabul edebilir.