首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel /broadcasting/auth总是被禁止,出现403错误

Laravel /broadcasting/auth总是被禁止,出现403错误
EN

Stack Overflow用户
提问于 2021-01-02 00:01:18
回答 1查看 884关注 0票数 0

我尝试了许多解决方案,但没有一个对我有效

我已经安装了Laravel echo和pusher js和Pusher/Pusher

#bootstrap.js

代码语言:javascript
运行
复制
import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    encrypted: true,

});

#.env

代码语言:javascript
运行
复制
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=my_id
PUSHER_APP_KEY=my_key
PUSHER_APP_SECRET=my_secret
PUSHER_APP_CLUSTER=eu

我的事件文件NewMessage

代码语言:javascript
运行
复制
class NewMessage implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;
    public $message;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(Message $message)
    {
        $this->message = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('messages.'. $this->message->to);
    }
    public function broadcastWith()
    {
        return ["message" => $this->message];
    }
}

channel.php

代码语言:javascript
运行
复制
Broadcast::channel('messages.{id}', function ($user, $id) {
    return $user->id === (int) $id;
});

Vue App JS代码

代码语言:javascript
运行
复制
mounted(){
            Echo.private(`messages${this.user.id}`)
            .listen('NewMessage', (e) => {
                this.handleIncoming(e.message)
            });
          },
methods:{
      saveNewMessage(msg){
                this.messages.push(msg);
            },
            handleIncoming(message){
                if(this.selectedContact && message.from == this.selectedContact.id ){
                    this.saveNewMessage(message);
                    return;
                }
                alert(message.text);
            }
          }

Api.php

代码语言:javascript
运行
复制
Route::post('/conversation/send', 'Api\ContactController@sendNewMessage');

联系人控制器

代码语言:javascript
运行
复制
public function sendNewMessage(Request $request)
    {
       $message = Message::create([
            'from' => $request->sender_id,
            'to' => $request->receiver_id,
            'text' => $request->text
        ]);

        broadcast(new NewMessage($message));
        return response()->json($message);
    }

我也阅读了官方文档,一切都很顺利,但我不知道为什么,这是一个抛出的错误。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-02 14:18:47

我弄清楚了为什么每次都显示身份验证被禁止或不显示身份验证

解决方案:您需要仔细检查您的PUSHER_APP_KEY,因为如果设置不正确,它会因为我们的流没有连接推流器而通过错误

代码语言:javascript
运行
复制
PUSHER_APP_KEY="PUT KEY HERE"

如果您非常确定您的应用程序密钥是正确的,则转到网络选项卡并单击您的推送器应用程序密钥,如果它显示的结果如下所示,则该密钥类似于e70ewesdsdssew0

代码语言:javascript
运行
复制
{"event":"pusher:connection_established","data":"{\"socket_id\":\"131139.31305364\",\"activity_timeout\":120}"}

您的API密钥是正确的,如果它不正确,它将显示如下错误

代码语言:javascript
运行
复制
{"event":"pusher:error","data":{"code":4001,"message":"App key 3fdsfdfsdfsd not in this cluster. Did you forget to specify the cluster?"}}

另外,别忘了把集群密钥

代码语言:javascript
运行
复制
PUSHER_APP_CLUSTER=eu
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65531274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档