我正在尝试使用pubnub和他们的访问管理器将特定用户授权到特定频道,然后在用户被授予读/写权限后将消息发布到频道。在授予对用户的访问权限后,我必须在对此调用时执行错误操作。下面的代码的第一部分返回看起来像grant()的成功响应,但publish()调用导致:
致命错误:在第48行的/home/dayfv98/public_html/mobile/pubtest.php中调用未定义的方法access :: publish()
这是我的代码:
<?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
));
?>
答案 0 :(得分:2)
访问管理器库不用于执行访问管理器范围之外的任何操作。它仅用于授予,撤销和审核。
您需要使用普通的PubNub sdk,但在构建PubNub对象时,请提供您之前授予的身份验证令牌。
**编辑:** PHP SDK现在似乎与Access Manager存在一些问题。我已经做了一些小的修补程序修改来解决这个问题并将它们包含在一个要点中,但请关注github上的官方存储库以获取更新版本:https://gist.github.com/keyosk/9c86b981948a3cf7f378
例如,要使用上面示例中授予的身份验证令牌,您可以这样做:
$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
));