使用Javascript向ID数组发送通知时出现Facebook访问令牌错误

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

本文关键字:Facebook 错误 访问令牌 通知 Javascript ID 数组 使用      更新时间:2023-09-26

我有一个名为myArray的数组中存储的Facebook ID列表,我正在尝试编写一些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 API提供了n个端点节点。根据节点的性质,有些需要用户访问令牌,有些需要应用程序访问令牌,还有一些需要页面访问令牌。(您可以通过此链接彻底了解访问令牌)

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

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

  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. Usinig应用程序访问令牌

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