Я работаю в Unity3D для Android, использующ SDK Facebook Unity, чтобы хранить, извлекать оценки и делать таблицы лидеров, но я нашел проблемы, и я не могу понять, причина.Не могу опубликовать оценку пользователя в Facebook SDK для Unity
Я использую:
- Unity Pro 5.3.3f1.
- Facebook Unity SDK 7.4.0.
- Graph 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 является структурой, которая инкапсулирует долго, и позволяет мне работать с ним побитовым для хранения более одного номера. Эти методы относятся к одноэлементному классу, который доступен в каждой точке игры и сохраняется посредством смены сцены.
Любая идея была бы очень ценной для меня, спасибо заранее.
чисто примечание, многие используют плагины prime31, чтобы добиться успеха с помощью FB. – Fattie
Проблема решена. Я отправлял 64-битное целое число, но API-интерфейс Facebook может принимать только 32-разрядное целое число без знака. – lmgginspace
вы должны принять это как ответ, это поможет людям. – Fattie