【问题标题】:Laravel Echo authentication via API通过 API 进行 Laravel Echo 身份验证
【发布时间】:2021-07-18 14:00:25
【问题描述】:

在客户端上将PusherEcho 结合使用,我正在尝试使用Bearer 授权标头令牌通过api 对私有通道进行身份验证-但是我遇到了以下日志(THE最后的日志是错误的)

Pusher : : ["State changed","initialized -> connected"]

推动者 : : ["正在连接",{"传输":"ws","url":"ws://ws-mt1.pusher.com:80/app/************?protocol= 7&client=js&version=7.0.3&flash=false"}]

Pusher : : ["State changed","connecting -> connected with 新套接字 ID 224550.32180982"]

Pusher : : ["没有回调 在 private-App.User.17 for pusher:subscription_error"]

Pusher : : ["错误:从身份验证端点返回的 JSON 是 无效,但状态码为 200。数据为:\n\n\t\n\t\t\t

似乎我的服务器只是返回网页而不是 JSON 响应。

这是我的客户端设置:

Pusher.logToConsole = true

const PusherClient = new Pusher(PUSHER_APP_KEY,{
    cluster: PUSHER_APP_CLUSTER,
    wsHost: `ws-${PUSHER_APP_CLUSTER}.pusher.com`,
    wssPort: 443,
    enabledTransports: ['ws'],
    forceTLS: true,
    encrypted: true,
    auth: {
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `Bearer ${token}`
        }
    },
    authEndpoint: http://127.0.0.1:8000/api/broadcasting/auth'
});

return new Echo({
    broadcaster: 'pusher',
    client: PusherClient
})

Laravel 服务器上api.php 中定义的广播路由:

Route::group(['middleware' => 'auth:api'], function () {
    Broadcast::routes();
});

我在这里错过了什么?

【问题讨论】:

标签: laravel pusher laravel-echo pusher-js


【解决方案1】:

首先,您可以在没有 laravel-echo 的情况下设置客户端,只需使用 pusher-js。在我使用的版本中不应该有 Content-Type 标头:

    auth: {
        headers: {
            'Authorization': `Bearer CLIENT_TOKEN`,
        }

    },

您必须确保您订阅的频道可用,并且所有推送器应用参数用户令牌均已正确插入。

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 2016-11-01
    • 2019-01-04
    • 2014-06-13
    • 2018-06-05
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    相关资源
    最近更新 更多