我正在尝试将 pubnub 与他们的访问管理器一起使用,以授权某些用户访问特定 channel ,然后在用户被授予读/写权限后向该 channel 发布消息。在授予用户访问权限后,我一定是在 publish() 调用上做错了什么。下面代码的第一部分返回看起来像是对 grant() 的成功响应,但 publish() 调用的结果是:
fatal error :调用/home/dayfv98/public_html/mobile/pubtest.php 中的未定义方法 access::publish() 第 48 行
这是我的代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require('pubnub.php');
require('pam.php');
$chat_entry = addslashes(trim($_POST['chat_entry']));
// CONNECT TO ACCESS MANAGER
$manager = new access(
"MY_PUB_KEY...not included for security",
"MY_SUB_KEY...not included for security",
"MY_SEC_KEY...not included for security"
);
## Grant User Access
print_r($manager->grant(
"chat", // CHANNEL
"44444", // STRING (AUTH KEY)
true, // READ
true, // WRITE
0 // TTL in MINUTES
));
$manager->publish(array(
'channel' => 'chat', ## REQUIRED Channel to Send
'message' => $chat_entry
));
?>
最佳答案
访问管理器库不打算用于执行访问管理器范围之外的任何事情。它仅用于授权、撤销和审计。
您将需要使用普通的 PubNub sdk,但在构造您的 PubNub 对象时,请提供您之前授予的身份验证 token 。
**编辑:** PHP SDK 现在似乎与 Access Manager 有一些问题。我做了一些小的修补程序修改来解决这个问题,并将它们包含在要点中,但请留意 github 上的官方存储库以获取更新版本:https://gist.github.com/keyosk/9c86b981948a3cf7f378
例如,要使用您在上面的示例中授予的身份验证 token ,您可以这样做:
$pubnub = new Pubnub(array(
'publish_key' => 'MY_PUB_KEY',
'subscribe_key' => 'MY_SUB_KEY',
'auth_token' => '44444',
));
$pubnub->publish(array(
'channel' => 'chat',
'message' => $chat_entry
));
关于php - 使用 pubnub 访问管理器通过 php 发布的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23184001/