0

我正在使用 Javascript SDK 将分数发布到 FB,但它给了我错误({error:{message:"(#15) 此方法必须使用应用程序 access_token 调用。", type:"OAuthException", code:15 }}) :

我正在使用来自以下的 accessToken:

    FB.getLoginStatus(function(response) {
      if (response.status === 'connected') {
        // the user is logged in and has authenticated your
        // app, and response.authResponse supplies
        // the user's ID, a valid access token, a signed
        // request, and the time the access token 
        // and signed request each expire
        uid = response.authResponse.userID;
        accessToken = response.authResponse.accessToken;

我用来发布分数的功能如下:

    FB.api("uid/scores", 'post', {score: scoredata, access_token: accessToken },
            function(response) 
        {
           if (!response || response.error) {
              console.error(response);
           } else {
              console.log(response);
           }
        });

由于 fb 特别缺少 JAvascript 的文档,任何人都可以给出想法。

雅各布

4

2 回答 2

0

这是因为分数应该作为应用程序而不是用户发布。

您尝试做的事情应该使用Applicationaccess_token并从服务器端(不是浏览器中的 JavaScript)完成,这样您的应用程序机密就不会被泄露。

于 2012-04-12T09:07:52.140 回答
0

对于使用用户访问令牌在 Facebook 游戏上发布分数,您不再需要在此调用中传递访问令牌,它也可以工作,但不是必需的。您的代码上的错误是 FB.api 必须在我之前的 ' 之后使用 / 调用,我认为您需要使用 ME 而不是 user id 。

 FB.api('/me/scores/', 'post', { scores: score }, function(response) {
    if( response.error ) {
      console.error('Failed',response);
    } else {
      console.log('Posted', response);
               }    
  });

您需要 publish_actions 权限才能发布,这将始终设置新的得分值,仅适用于高分,如果您编写代码..获取用户得分,使用 user_game_activities 并使用 JavaScript 比较值,然后在新值更大时发布。

您还可以使用 App Token 设置高分,使用非常不同的调用。我一直在用它来保存老虎机游戏中的用户积分,我发现它可以多次保存和获取分数,以在两个或多个游戏会话之间保持更新和保存。我也有实时的 Facebook 游戏分数排行榜,它也可以在没有应用访问令牌的情况下工作,因为它是相对的,并且只显示你朋友的分数。

我就是这样做的,我喜欢它,Facebook 平台很棒。

实时 Facebook 游戏得分排行榜

于 2016-01-02T19:14:35.123 回答