所以我设置了一个应用程序,我试图通过服务器而不是应用程序发送分数。这使我能够长期保持分数,同时还具有Facebook的社交优势。
现在,我遇到的问题是使用应用程序令牌检索分数。我可以使用应用程序令牌或用户令牌发布绝对正常,但在使用应用程序令牌检索分数时,我会收到以下内容:
{
"data": [
]
}
如果它没有工作或权限问题,我希望收到一个错误返回,但它返回一个空数组的事实是令人费解的。更令人费解的是,使用用户访问令牌可以非常精确地检索得分,因此它显然可以正确地到达Facebook后端。
在这种情况下使用App Access令牌只是一个问题吗?文档说我应该可以使用一个,但也许这是错的?
我还想澄清一下,我已经在代码和图表资源管理器中运行了这个,但总是没有成功。
答案 0 :(得分:1)
确保您已授予user_games_activity和friends_games_activity权限 在developers.facebook.com/tools/explorer上 从上面的链接中,您将获得一个应用程序access_token并将其添加到您的代码中,如此
public void sendDataToFacebookGraphServer()
{
// TODO Auto-generated method stub
final Session session = Session.getActiveSession();
List<String> permissions = session.getPermissions();
if (!isSubsetOf(PERMISSIONS, permissions)) {
Session.NewPermissionsRequest newPermissionsRequest = new Session
.NewPermissionsRequest(UnityPlayer.currentActivity, PERMISSIONS);
session.requestNewPublishPermissions(newPermissionsRequest);
return;
}
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://graph.facebook.com/user_id/scores");
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
pairs.add(new BasicNameValuePair("score", "3000"));
// add this line and try
pairs.add(new BasicNameValuePair("access_token", "add_app_access_token_here"));
try{
post.setEntity(new UrlEncodedFormEntity(pairs));
}
catch(UnsupportedEncodingException e)
{
}
try{
response = client.execute(post);
Log.i("*********Response*******************************************************", response.toString());
UnityPlayer.currentActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(UnityPlayer.currentActivity,""+response.toString(),Toast.LENGTH_LONG).show();
}
});
}
catch (IOException e1)
{
}
}
答案 1 :(得分:0)
这应该与app访问令牌一起使用吗?我认为不是。
根据Scores Documentation你可以
/USER_ID/scores
)/APP_ID/scores
)/USER_ID/scores
)在任何应用中检索用户的朋友分数 - 虽然这一点尊重这些用户的隐私设置,因此您无法获得其游戏/应用活动为私人