Laravel Kreait软件包在没有项目ID的情况下无法创建消息传递服务

时间:2020-06-24 15:20:13

标签: php laravel firebase

我想使用Firebase云消息传递,所以我安装了kreait laravel firebase package 我在Firebase控制台中创建了一个服务帐户,将下载的.json文件包含在laravel的根文件夹中并使用

FIREBASE_CREDENTIALS=app-XXXXX-firebase-adminsdk-XXXX-XXXXXXX.json

.env


还创建了一个控制器,用于向设备发送推送通知

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Auth;
use Kreait\Firebase\Messaging\CloudMessage;
use Kreait\Firebase\Messaging\Notification;

class PushNotifactionController extends Controller
{
    public function sendPush(){
        $messaging = app('firebase.messaging');
        $deviceTokens = Auth::user()->deviceTokens()->pluck('device_token')->toArray();

        $message = CloudMessage::new();
        $message->withNotification(Notification::create('Title', 'Body'));

        $sendReport = $messaging->sendMulticast($message, $deviceTokens);
        
        return response()->json([
            'Successful' => $sendReport->successes()->count(),
            'Failed' => $sendReport->failures()->count()
        ]);
    }
}

如果我启动Flutter应用程序,firebase程序包将创建一个设备令牌,并将其存储在数据库中。 但是,如果我想用邮递员触发sendPush(),则会收到此错误:

"message": "Unable to create the messaging service without a project ID",
"exception": "Kreait\\Firebase\\Exception\\RuntimeException",

从Firebase控制台,我可以向手机发送通知。

该软件包应自动发现服务帐户和项目ID。 帮助非常感谢!

1 个答案:

答案 0 :(得分:2)

经过一番尝试,我找到了这个命令

php artisan优化:清除

问题在于,在Kreait库的文件“ Factory.php”中,搜索firebase .json文件的函数使用命令

Util :: getenv('FIREBASE_CREDENTIALS')

首先,我解锁了用于写入的文件,并检查了“ env('FIREBASE_CREDENTIALS')”命令是否有效,并且在我写完所有命令后都无法正常工作。

相关问题