使用应用程序令牌检索分数

时间:2012-09-04 12:42:43

标签: facebook-graph-api token facebook-access-token

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

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

{
  "data": [
  ]
}

如果它没有工作或权限问题,我希望收到一个错误返回,但它返回一个空数组的事实是令人费解的。更令人费解的是,使用用户访问令牌可以非常精确地检索得分,因此它显然可以正确地到达Facebook后端。

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

我还想澄清一下,我已经在代码和图表资源管理器中运行了这个,但总是没有成功。

2 个答案:

答案 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)在任何应用中检索用户的朋友分数 - 虽然这一点尊重这些用户的隐私设置,因此您无法获得其游戏/应用活动为私人