1

所以我设置了一个应用程序,我试图通过服务器而不是从应用程序发送分数。这让我可以长期保持分数,同时也拥有 Facebook 的社交优势。

现在,我遇到的问题是使用应用程序令牌检索分数。我可以使用应用程序令牌或用户令牌绝对正常发布,但是在使用应用程序令牌检索分数时,我收到以下信息:

{
  "data": [
  ]
}

如果它完全不起作用或权限问题,我希望收到返回的错误,但它返回一个空数组的事实令人费解。更令人费解的是,使用用户访问令牌检索分数绝对没问题,因此很明显它正确地到达了 Facebook 后端。

这只是在这种情况下使用应用程序访问令牌的问题吗?文档说我应该可以使用一个,但也许是错误的?

我还想澄清一下,我已经在代码中和通过 Graph Explorer 运行了它,但总是没有成功。

4

2 回答 2

1

确保您从上面的链接中授予了 developer.facebook.com/tools/explorer 上的 user_games_activity 和 friends_games_activity 权限,您将获得一个应用程序 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) 
            {

            }


}
于 2013-06-24T06:23:18.200 回答
0

这应该与应用访问令牌一起使用吗?我不认为它是。

根据分数文档,您可以

  • /USER_ID/scores使用用户或应用访问令牌 ( )检索用户的分数
  • /APP_ID/scores使用用户访问令牌 ( )为您的应用检索用户朋友的分数
  • /USER_ID/scores使用用户访问令牌(
于 2012-10-30T18:16:34.563 回答