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タイプロングをカプセル化する構造体である、と私はそれが複数の番号を保存するためにビット単位に操作できます。これらのメソッドは、ゲームのあらゆるポイントでアクセス可能なシングルトンのようなクラスに属し、シーンの変更によって保持されます。
事前に感謝の意を表します。
純粋にメモ、多くの人がFBで物事を完了するために、prime31プラグインを使用します。 – Fattie
問題は解決しました。私は64ビットの整数を送信していましたが、Facebook Graph APIは32ビットの符号なし整数しか受け入れられません。 – lmgginspace
あなたは答えとして、それが人々を助けることを追求する必要があります。 – Fattie