Ssl Pubnub CodeNameOne库-缺少方法(Access Manager)

Ssl Pubnub CodeNameOne库-缺少方法(Access Manager),ssl,https,codenameone,pubnub,Ssl,Https,Codenameone,Pubnub,我正在我的社交应用程序项目中使用Pubnub库(Pubnub-CodeNameOne-3.7.8.cn1lib)(其中包括我用您的优秀教程实现的实时聊天:) 但由于苹果不再接受应用程序的http URL连接,我不得不加强我的应用程序的安全性,因此我决定使用HTTPS并激活Pubnub dashboard中的Access Manager功能(我遵循了Pubnub教程) 因此,我在CN1项目中更改了Pubnub的实例化,如下所示: pb = new Pubnub(PUBNUB_PUB_KEY, PU

我正在我的社交应用程序项目中使用Pubnub库(Pubnub-CodeNameOne-3.7.8.cn1lib)(其中包括我用您的优秀教程实现的实时聊天:)

但由于苹果不再接受应用程序的http URL连接,我不得不加强我的应用程序的安全性,因此我决定使用HTTPS并激活Pubnub dashboard中的Access Manager功能(我遵循了Pubnub教程)

因此,我在CN1项目中更改了Pubnub的实例化,如下所示:

pb = new Pubnub(PUBNUB_PUB_KEY, PUBNUB_SUB_KEY, SECRET_KEY, true);//enable SSL
pb.setAuthKey(USER_UIID);
不幸的是,当我通过Pubnub订阅/发布时,仍然会出现错误:

[错误112-0]:身份验证失败。不正确的身份验证密钥: {“消息”:“禁止”,“有效负载”:{“通道”:[“myChannelID”]},“错误”:true,“服务”:“访问” 经理,“状态”:403}

因此,我希望执行管理PAM功能,例如授权或撤销,以解决上述错误消息问题。 但是我没有找到pubnub教程中提到的pubnub.pamGrant()或pubnub.pamRevoke()方法。所以我仍然坚持这个错误

你知道我如何解决这个问题吗?非常感谢您的帮助。

PubNub Access Manager和SSL/TLS 虽然您应该使用,但在TLS上使用PubNub并不需要Access Manager(SSL是不推荐使用的/易受攻击的前身,这些术语通常可以互换使用)

因此,您的初始化代码正确,可以在调用PubNub操作时启用TLS(https连接)

pb=new Pubnub(Pubnub\u PUB\u KEY,Pubnub\u SUB\u KEY,SECRET\u KEY,true);
但是,如果在密钥集(发布/子密钥)上启用Access Manager,则需要在验证密钥上为频道授予权限(读、写和管理)。每个最终用户都应具有唯一的身份验证密钥,该密钥具有该用户发布、订阅、获取历史记录、状态等所需的频道权限

您可以使用publish、subscribe和secret密钥初始化PubNub(执行
grant
API需要secret密钥)。使用v4 PubNub SDK,服务器使用密钥初始化时具有超级管理员权限。v3 SDK要求服务器授予自己对自己的身份验证密钥的访问权,但由于Codename One用于移动客户端应用程序,因此不需要等待Codename One的v4 PubNub SDK。我假设您将在您的服务器和我们的服务器上使用Java。注意:文档需要更新,因为它们仍然声明即使使用密钥初始化,也需要身份验证密钥

因此,我的建议是,启用SSL(TLS),就像您已经为服务器和客户端所做的那样,但短期内禁用Access Manager。基本功能正常工作后,将Access Manager和身份验证密钥的使用集成到服务器和客户端。

PubNub Access Manager&SSL/TLS 虽然您应该使用,但在TLS上使用PubNub并不需要Access Manager(SSL是不推荐使用的/易受攻击的前身,这些术语通常可以互换使用)

因此,您的初始化代码正确,可以在调用PubNub操作时启用TLS(https连接)

pb=new Pubnub(Pubnub\u PUB\u KEY,Pubnub\u SUB\u KEY,SECRET\u KEY,true);
但是,如果在密钥集(发布/子密钥)上启用Access Manager,则需要在验证密钥上为频道授予权限(读、写和管理)。每个最终用户都应具有唯一的身份验证密钥,该密钥具有该用户发布、订阅、获取历史记录、状态等所需的频道权限

您可以使用publish、subscribe和secret密钥初始化PubNub(执行
grant
API需要secret密钥)。使用v4 PubNub SDK,服务器使用密钥初始化时具有超级管理员权限。v3 SDK要求服务器授予自己对自己的身份验证密钥的访问权,但由于Codename One用于移动客户端应用程序,因此不需要等待Codename One的v4 PubNub SDK。我假设您将在您的服务器和我们的服务器上使用Java。注意:文档需要更新,因为它们仍然声明即使使用密钥初始化,也需要身份验证密钥


因此,我的建议是,启用SSL(TLS),就像您已经为服务器和客户端所做的那样,但短期内禁用Access Manager。一旦您的基本功能正常工作,请将Access Manager和身份验证密钥的使用集成到您的服务器和客户端。

这似乎是pubnub库中的一个问题,我认为我们无法从我们这方面提供帮助。我通过评论(已删除)将其转换为下面的正式答案。请检查并接受它是否有效,或者评论更多需要进一步澄清的问题。这似乎是pubnub库中的一个问题,我认为我们无法从我们的角度提供帮助。我通过评论(我删除了)转换为下面的正式答案。请检查并接受它是否有效,或者在需要进一步澄清的地方对更多问题进行评论。它现在可以正常工作(只需禁用我现在不需要的Access Manager功能)。非常感谢您的详细解释。它现在运行良好(只需禁用我现在不需要的Access Manager功能)。非常感谢您的详细解释。