2016-04-13 18 views
1

Facebook Unity SDKを使用してスコアを取得してリーダーボードを作成するアンドロイドのUnity3Dゲームで作業していますが、問題が見つかりました。理由。ユニティのFacebook SDKにユーザースコアを投稿できません

私が使用しています:

  • ユニティプロ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タイプロングをカプセル化する構造体である、と私はそれが複数の番号を保存するためにビット単位に操作できます。これらのメソッドは、ゲームのあらゆるポイントでアクセス可能なシングルトンのようなクラスに属し、シーンの変更によって保持されます。

事前に感謝の意を表します。

+0

純粋にメモ、多くの人がFBで物事を完了するために、prime31プラグインを使用します。 – Fattie

+0

問題は解決しました。私は64ビットの整数を送信していましたが、Facebook Graph APIは32ビットの符号なし整数しか受け入れられません。 – lmgginspace

+0

あなたは答えとして、それが人々を助けることを追求する必要があります。 – Fattie

答えて

0

問題は解決しました。私は64ビットの整数を送信していましたが、Facebook Graph APIは32ビットの符号なし整数しか受け入れられません。

関連する問題