1

皆さん、

プライベート プッシャー チャネルでサブスクライブすると、次のエラー メッセージが表示されます。

Invalid signature: Expected HMAC SHA256 hex digest of 124425.1545539:private-dash-98, but got e7ed825903c1e18931cceebba457270a6b1e79331387527ab97e430ba4d22068

プッシャーコンソール

Pusher : State changed : initialized -> connecting
Pusher : Connecting : {"transport":"xhr_streaming","url":"https://sockjs-
eu.pusher.com:443/pusher/app/XXXXXX?
protocol=7&client=js&version=4.2.2"}
Pusher : State changed : connecting -> connected ID 124425.1545539
Pusher : Event sent : {"event":"pusher:subscribe","data":
{"auth":"e24378fc4fcd43c36aa3:
e7ed825903c1e18931cceebba457270a6b1e79331387527ab97e430ba4d22068"
,"channel":"private-dash-98"}}
Pusher : Event recd : {"event":"pusher:error","data":
{"code":null,"message":"Invalid signature: Expected HMAC SHA256 hex digest 
of 124425.1545539:private-dash-98, but got 
e7ed825903c1e18931cceebba457270a6b1e79331387527ab97e430ba4d22068"}}
Pusher : Error : {"type":"WebSocketError","error":
{"type":"PusherError","data":{"code":null,"message":"Invalid signature: 
Expected HMAC SHA256 hex digest of 124425.1545539:private-dash-98, but got 
e7ed825903c1e18931cceebba457270a6b1e79331387527ab97e430ba4d22068"}}}

クライアント: pusher-libraryを使用した Angular 5 (バージョン 4.2.2)

Pusher.logToConsole = true;

        this.pusher = new Pusher(environment.pusherAppKey, {
            cluster: 'eu',
            encrypted: true,
            authEndpoint: environment.api + environment.pusherAuthUrl + '?areaId=' + this.locationService.selectedAreaId,
            auth: {
                headers: {
                    'Authorization': 'Bearer ' + this.authService.getAccessToken()
                }
            }
        });

        this.channel = this.pusher.subscribe('private-dash-98');

バックエンド:プッシャー ライブラリを使用した AspNet Core 2.0 Web Api

    var authToken = pusher.Auth("private-dash-98", "124425.1545539");

    public string Auth(string channelName, string socketId)
    {
        var auth = _pusher.Authenticate(channelName, socketId);
        return auth.ToJson();
    }

Pusher auth-endpoint は次を返します。

{"auth":"e24378fc4fcd43c36aa3:e7ed825903c1e18931cceebba457270a6b1e79331387527ab97e430ba4d22068"}

エンドポイントの結果は完全に正しいようです。フォーメーションの問題はありますか?

助言がありますか?ありがとう!

4

1 に答える 1

0

私は私の問題を解決しました。APIコントローラーでsocket_idを見逃しました:

    [HttpPost("auth")]
    public async Task<IActionResult> GetAuthToken([FromQuery] int? areaId, [FromForm] string socket_id)
    {
        try
        {
            var pusher = new PusherManager(_appSettings);
            var authToken = pusher.Auth("private-area-" + areaId, socket_id);

            return Ok(authToken);
        }
        catch (Exception ex)
        {
            _logger.LogError(ex.ToString());
            return new StatusCodeResult(500);
        }
    }

上記のコードは期待どおりに動作するようになりました。

于 2018-02-05T08:22:46.763 に答える