Не удается подписаться на канал после успешной выдачи

Вот что я делаю в PHP:

$pubnub = new Pubnub(array(
  'subscribe_key' => '<SUBSCRIBE_KEY>',
  'publish_key' => '<PUBLISH_KEY>',
  'secret_key' => '<SECRET_KEY>',
  'uuid' => $uuid,
));
$grants = $pubnub->grant(true, true, $channel, $auth_key, 0);

Это работает. Я получаю ответ 200 с моим ключом авторизации и правильным доступом.

Затем я делаю это в JS:

var pubnub = PUBNUB.init({
  auth_key: settings.auth_key,
  subscribe_key: settings.subscribe_key,
  publish_key: settings.publish_key,
  uuid: settings.uuid,
});

pubnub.subscribe({
  channel: settings.channel,
  // auth_key: settings.auth_key,
  // uuid: settings.uuid,
  presence: function(m) {
    console.log('presence', m);
  },
  message: function(m) {
    console.log('message', m);
  }
});

и это включает около 10 403 ошибок в секунду. Я пытался включить и исключить кучу конфигурационных переменных, как uuid а также auth_key, но все, что я получаю, это очень много 403-х годов.

Если я включу origin: 'pubsub.pubnub.com', presence Событие запускается один или два раза, но потом все равно целая куча 403-х. Если я не включу origin, только 403, нет событий.

Делать here_now() в JS работает нормально, но uuids пусто, и occupancy это 0:

setInterval(function() {
  pubnub.here_now({channel: settings.channel}, function(rsp) {
    console.log('here_now', rsp);
  });
}, 2000);
  • Отключение диспетчера доступа в консоли администратора PubNub "исправляет" это, но, очевидно, мне нужно Access Management
  • Я думаю, что я следовал https://www.pubnub.com/docs/web-javascript/pam-security довольно точно, но ничего не работает.
  • https://www.pubnub.com/developers/tutorials/access-manager/ даже не упоминается .subscribe(), так что понятия не имею, что это должно делать.
  • URL-адрес JS для подписки (10x/sec) http://ps9.pubnub.com/subscribe/<SUBSCRIBE_KEY>/<CHANNEL>%2C<CHANNEL>-pnpres/0/0?uuid=<UUID>&auth=<AUTH_KEY>&pnsdk=PubNub-JS-Web%2F3.7.16

Почему PHP grant работать, но не JS subscribe?

1 ответ

Решение

PubNub Presence и Access Manager

Каждый раз, когда вы используете Presence вместе с Access Manager (входит бесплатно во все учетные записи) в PubNub, когда вы предоставляете разрешения каналам, вам также необходимо предоставить доступ к этим каналам. -pnpres коллеги, если клиенты собираются отслеживать присутствие (реализовать обратный вызов присутствия или включить присутствие на канале - зависит от того, как это обрабатывается SDK).

$grants = $pubnub->grant(true, true, 'sports,sports-pnpres', $auth_key, 0);

Этот пример кода показывает, как вы можете предоставить несколько каналов за один вызов.

Другие вопросы по тегам