我正在使用pusher java客户端(mdpye的pusher-java-client)开发一个使用pusher进行推送通知的android应用程序。连接到Pusher后,我可以成功订阅状态通道。一旦订阅了在线频道,当我尝试订阅另一个私有频道时,它显示错误:无效签名:xxx:YYYY的预期HMAC SHA256十六进制摘要,但得到xxxxxxxxxxxxx(可能是身份验证错误)。
关键是如果身份验证出现问题,我甚至无法连接到第一个在线状态通道。那么,可能是什么问题?
代码段:
authorizer = new HttpAuthorizer(endpointUrl);
PusherOptions options = new PusherOptions().setEncrypted(true).setAuthorizer(authorizer);
pusher = new Pusher(pusher_key, options);
pusher.getConnection().bind(ConnectionState.ALL, this);
String socketId = pusher.getConnection().getSocketId();
String selfJson = authorizer.authorize(PRESENCE_CHANNEL_NAME, socketId);
presenceChannel = pusher.subscribePresence(PRESENCE_CHANNEL_NAME, presenceEventListener);
notificationChannel = pusher.subscribePrivate(notificationChannelName, notificationEventListener);
答案 0 :(得分:2)
频道彼此独立授权 - 对每个私人或在线订阅都会调用Authorizer
,您的端点可能会返回一个正确的结果而另一个则不正确。
请注意,私有和现状通道之间的授权端点所需的响应存在差异,后者包括有关用户的数据,这些数据在前者中无效。见http://pusher.com/docs/authenticating_users#implementing_endpoints