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

Laravel+React视频聊天项目中Pusher presence_auth()方法未定义报错

解决Pusher presence_auth() 未定义方法的问题

这个错误的核心原因很明确:你使用的Pusher PHP SDK版本(v5及以上)已经废弃了presence_auth()方法,取而代之的是统一的authorizeChannel()方法。下面是具体的修复步骤:

1. 修改HomeController中的认证逻辑

把你HomeController里的authenticate方法替换成下面的代码,用authorizeChannel()替代presence_auth():

public function authenticate(Request $request){
    $socketId = $request->socket_id;
    $channelName = $request->channel_name;
    
    $pusher = new Pusher(
        '7525d88e2baa6d08b175', 
        'c25081ca96b9033e941c', 
        '523589', 
        [
            'cluster' => 'ap1',
            'encrypted' => true
        ]
    );

    $presence_data = ['name' => auth()->user()->name];
    // 替换presence_auth为authorizeChannel
    $key = $pusher->authorizeChannel(
        $channelName, 
        $socketId, 
        auth()->id(), 
        $presence_data
    );

    return response($key);
}

2. 确认SDK版本(可选)

你可以查看composer.json文件里的pusher/pusher-php-server版本,确认是v5+:

"require": {
    // ...
    "pusher/pusher-php-server": "^5.0"
}

如果是v4及以下版本,presence_auth()还是可用的,但建议升级到最新版本以获得更好的兼容性和安全性。

3. 额外检查点

  • 确保auth()->id()能正确返回当前登录用户的ID,没有返回null;
  • 前端Pusher订阅的确实是presence频道(频道名以presence-开头,比如你代码里的presence-video-channel);
  • 确认.env文件中的Pusher配置(APP_KEY、APP_SECRET、APP_ID、CLUSTER)和你初始化Pusher实例时的参数一致。

修改完成后,重新测试presence频道的认证,应该就能解决500错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:35:35