向具有 Javascript 的 ID 数组发送通知时出现 Facebook 访问令牌错误

Facebook Access Token Error when sending Notifications to an Array of IDs with Javascript

我有一个 Facebook ID 列表存储在一个名为 myArray 的数组中,我正在尝试编写一些 Javascript 来遍历此数组并向每个 ID 发送通知。

这是我最近的尝试:

function sendNotifications(){

var myArray = [624523462, 25624523426, 3245451236, 14352654];

for (var q = 0; q < myArray.length; q++) { 

    FB.api( 
   "/"+myArray[q]+"/notifications",
    "POST",
   {
        "template": "This is a test notification!"
    },
    function (response) {
      if (response && !response.error) {
          console.log("notification should be sent.");
      } else {
      console.log(response);
         }
      }
     );             
    }}

这是给我的错误信息: message:"(#15) This method must be called with an app access_token.

我对此有点困惑,因为玩家已经在这个阶段登录了我的应用程序。我已经多次请求从 Graph API 获取有关玩家的信息,所以我不确定它为什么要我提供应用程序访问令牌。每个发布的通知都需要一个新的访问令牌吗?还是在一定时间后 运行 出来?

我不知道将其包含在此处的正确方法。我是否在函数的开头调用令牌并将其存储为变量,然后我将其填充到某个地方?有人可以告诉我使用我当前代码实现此目的的正确语法吗?

非常感谢任何帮助, 提前致谢!

facebook 提供了 n 个端点节点 API。有些需要用户访问令牌,有些需要应用程序访问令牌,有些需要页面访问令牌,具体取决于节点的性质。 (您可以通过 this link 彻底了解访问令牌)

大多数端点都使用 用户访问令牌 服务,Facebook SDK(在您的情况下为 FB.api())默认在每次调用时使用。因此,您能够成功地提出这几个请求。很公平。

Notification API 需要 app 访问令牌 而不是用户访问令牌。在更改应用程序的凭据之前,应用程序访问令牌永远不会过期。

  1. 获取应用程序访问令牌

    选项 1- 使用 - {app-id}|{app-secret} 直接,这只是应用程序访问令牌。

    选项 2-

    GET /oauth/access_token?
        client_id={app-id}
        &amp;client_secret={app-secret}
        &amp;grant_type=client_credentials 
    

    重要 - 您不得在客户端公开应用程序机密。这就像您的应用程序的密码!所以你必须只在服务器端进行这个调用

  2. 使用应用访问令牌

    使用任何访问令牌都非常容易,只需添加参数 access_token 并向其传递所需的值即可。例如:/.../notifications?access_token={app-access-token} 懒惰地,您应该在您的服务器上而不是直接在客户端上进行此调用。