You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Facebook PHP SDK推送通知?附AccessToken获取及可用代码咨询

获取有效的Access Token用于推送Facebook通知

首先得明确几个关键前提:

  • 你的Facebook应用必须完成基础配置(比如添加对应平台、设置有效的重定向URI)
  • 要给用户推送通知,必须让目标用户授权你的应用获取notifications权限——这个权限需要走Facebook官方审核,测试阶段可以用测试用户绕过审核要求

1. 获取短期用户Access Token

通过OAuth 2.0授权流程引导用户完成登录和授权:

  • 构造授权URL,填入你的应用信息和所需权限:
    https://www.facebook.com/v18.0/dialog/oauth?
    client_id={你的应用ID}
    &redirect_uri={你的重定向URI}
    &scope=notifications
    &response_type=code
    
  • 用户授权后,Facebook会跳转到你设置的重定向URI,并附带一个授权码code
  • 用这个授权码换取短期Access Token:发送POST请求到https://graph.facebook.com/v18.0/oauth/access_token,参数包括:
    • client_id:你的应用ID
    • client_secret:你的应用密钥
    • redirect_uri:和授权URL中一致的地址
    • code:刚获取到的授权码

2. 换取长期用户Access Token

短期Token只有2小时有效期,为了长期稳定推送通知,需要换成60天有效期的长期Token:
发送GET请求到https://graph.facebook.com/v18.0/oauth/access_token,参数:

  • grant_type=fb_exchange_token
  • client_id:你的应用ID
  • client_secret:你的应用密钥
  • fb_exchange_token:刚才拿到的短期Token

返回结果里的access_token字段,就是有效期60天的长期用户令牌。

3. 验证Token有效性

可以调用Graph API的调试端点确认Token是否可用:

GET https://graph.facebook.com/v18.0/debug_token?
input_token={你的Token}
&access_token={你的应用ID}|{你的应用密钥}

如果返回的data.is_valid为true,且权限列表包含notifications,就说明Token可以正常使用。


使用Facebook PHP SDK推送通知的代码示例

首先通过Composer安装SDK:

composer require facebook/graph-sdk

以下是完整的推送实现代码:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;

// 初始化SDK实例
$fb = new Facebook([
  'app_id' => '{你的应用ID}',
  'app_secret' => '{你的应用密钥}',
  'default_graph_version' => 'v18.0',
]);

// 填入之前获取的长期用户Access Token和目标用户ID
$accessToken = '{用户的长期Access Token}';
$userId = '{目标用户ID}';

try {
  // 构造通知内容
  $notificationContent = [
    'template' => '这是来自你的应用的测试通知!',
    'href' => 'https://你的应用跳转链接.com' // 用户点击通知后跳转的地址
  ];

  // 发送通知请求
  $response = $fb->post(
    "/{$userId}/notifications",
    $notificationContent,
    $accessToken
  );

  $graphNode = $response->getGraphNode();
  echo "通知推送成功!通知ID:" . $graphNode['id'];
} catch(FacebookResponseException $e) {
  echo "Graph API返回错误: " . $e->getMessage();
} catch(FacebookSDKException $e) {
  echo "Facebook SDK错误: " . $e->getMessage();
}
?>

重要注意事项

  • notifications权限必须提交Facebook应用审核,未通过审核前只能用测试用户进行功能测试
  • 长期Token每60天需要重新刷新,你可以在Token过期前重复fb_exchange_token流程来更新有效期
  • 确保你的应用已添加对应平台(比如网站平台),且重定向URI已在应用设置中正确配置

内容的提问来源于stack exchange,提问作者SandTh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:07:24