使用pubnub访问管理器发布php时出现的问题


Issues using pubnub access manager to publish with php

我正试图将pubnub与他们的访问管理器一起使用,以授权某些用户访问特定频道,然后在授予用户读/写权限后向该频道发布消息。在授予用户访问权限后,我一定是对publish()调用出错了。下面代码的第一部分返回grant()的成功响应,但publish()调用的结果是:

致命错误:调用第48行/home/dayfv98/public_html/mobile/pubtest.php中的未定义方法访问::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
));

?>

访问管理器库不用于执行访问管理器范围之外的任何操作。它仅用于拨款、撤销和审计。

您需要使用普通的PubNub-sdk,但在构建PubNub对象时,请提供您之前授予的auth令牌。

**编辑:**PHP SDK现在似乎与Access Manager有一些问题。为了解决这个问题,我做了一些小的修补程序修改,并将它们纳入了要点中,但请关注github上的官方存储库,以获取新版本:https://gist.github.com/keyosk/9c86b981948a3cf7f378

例如,要使用您在上面的示例中授予的auth令牌,您可以这样做:

$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
));