如何通过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:你的应用IDclient_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_tokenclient_id:你的应用IDclient_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
相关产品推荐
相关产品推荐

