PHP Firebase HTTP v1 API 新版推送
|
- //最近一个公司项目需要对接firebase推送,官方文档就是谢特,再网上找了很多大神的资料,还是有很多坑,把自己踩的坑记录一下,平时都是伸手党,这次回馈一下
复制代码- /**<br> * 注意需要准备vpn<br> * 1.安装sdk composer require google/apiclient:^2.12.1<br> * 2.firebase推送,如要本地调试需找到vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php 中 applyHandlerOptions 方法,设置$options['verify'] = false;<br> * @param $param ['title'=>推送标题,'body'=>推送信息]<br> * @param $token 设备token<br> * @return bool|string<br> */<br>public function send($param, $token)<br>{<br> $client = new Client();<br> $client->useApplicationDefaultCredentials();<br> $client->setAuthConfig($this->app->getRootPath() . 'public/path/to/xxxx-xxxx-3f599409d1e3.json');//引入json秘钥<br> $client->setScopes('https://www.googleapis.com/auth/firebase.messaging'); # 授予访问 FCM 的权限<br> // 你的 Firebase 项目 ID<br> $project = "firebase-aca99";<br> $send_url = "https://fcm.googleapis.com/v1/projects/{$project}/messages:send";<br> $access_token = $client->fetchAccessTokenWithAssertion();//获取秘钥<br> if (!isset($access_token['access_token'])) {<br> Log::error('推送失败,未获取到秘钥');<br> return false;<br> }<br> $accessToken = $access_token['access_token'];//秘钥<br> //推送参数<br> $params = [<br> "message" => [<br> "token" => $token, //需要发送的设备号<br> "notification" => $param<br> ]<br> ];<br> //header请求头,$accessToken 就是你上面获取的令牌<br> $header = [<br> 'Content-Type: application/json',<br> 'Authorization: Bearer ' . $accessToken,<br> ];<br> $response = http_post($send_url, json_encode($params), ['headers' => $header]);<br> $response = json_decode($response,true);<br> if(isset($response['name'])){<br> return true;<br> }elseif(isset($response['error'])){<br> Log::error("推送失败:{$response['error']['code']},{$response['error']['message']}");<br> return false;<br> }
复制代码 来源:https://www.cnblogs.com/aiyinsitan/p/16968237.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|
|
|
发表于 2023-1-2 16:06:00
举报
回复
分享
|
|
|
|