ios - 推送客户端错误 : Invalid Signature

标签 ios swift pusher pusherswift

我最近查看了我的推送器错误日志并注意到:

Invalid signature: Expected HMAC SHA256 hex digest of 217478.6054950:private-production1_xxxxx_1232:{"user_id":xxxx}, but got 707d39519ca7f971a134524d8fe2ebafbddd64f42b6af0a20d6a73fxxxxxxx

总的来说,我们的 websockets 一直运行良好。我们有许多客户工作得很好,套接字总体上似乎没有问题。这是我第一次注意到这个错误,我经常检查错误日志。这是我应该关心的事情吗?我可以确认 private channel 总体上正常工作。

前端代码如下:

let options = PusherClientOptions(
  authMethod: AuthMethod.authRequestBuilder(authRequestBuilder: AuthRequestBuilder()
)
pusher = Pusher(key: pusherKey!, options: options)

class AuthRequestBuilder: AuthRequestBuilderProtocol {
  func requestFor(socketID: String, channel: PusherChannel) -> NSMutableURLRequest? {
    let request = NSMutableURLRequest(url: URL(string: "https://\(baseURLPrefix).xxxxxx.com/xxxxx/xxxxx")!)
    request.httpMethod = "POST"
    request.httpBody = "socket_id=\(socketID)&channel_name=\(channel.name)".data(using: String.Encoding.utf8)
    request.addValue(
      "Bearer " + authToken, forHTTPHeaderField: "Authorization"
    )
    return request
  }
}

在后端(Laravel 应用程序):

// Controller

public function presence_auth(Request $request)
{
    $pusher = new Pusher(
        config('broadcasting.connections.pusher.key'),
        config('broadcasting.connections.pusher.secret'),
        config('broadcasting.connections.pusher.app_id')
    );

    return $pusher->presence_auth($request->input('channel_name'), $request->input('socket_id'), AuthUser()->id);
}

如果他们将错误的 Bearer token 传递给我们的后端,是否会发生此错误?

最佳答案

您正在使用 $pusher->presence_auth 为私有(private) channel 创建签名,即以 private- 为前缀的 channel 。但是 presence_auth 旨在验证存在 channel ,即以 presence- 为前缀的 channel 。

如果您希望使用状态数据,您可以使用 presence- channel 前缀。如果你想使用一个没有状态信息的private- channel ,你可以使用:

$pusher->socket_auth($request->input('channel_name'), $request->input('socket_id'))

关于ios - 推送客户端错误 : Invalid Signature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44072726/

相关文章:

javascript - Pusher 身份验证套接字 ID 未定义

objective-c - (AppDelegate *)的含义

iphone - 将委托(delegate)添加到自定义 UITableView

ios - 如果我在 UIViewController 中有两个 UITableView,我如何检测哪个 tableview 正在滚动?

ios - 几秒钟后显示警报 View

ios - 无法在数组中插入对象,我想将其添加到用户默认值

ios - swift 中的 Firebase 查询排序顺序?

javascript - PusherBroadcaster.php 中的 Laravel 5.5 BroadcastException(第 106 行)

ios - 带有静态单元格的 DetailView

connection - 检测到错误/断开连接时推送器自动重新连接