Подписка PubNub с ошибкой AuthKey 403 в Objective C

avatar
Mục Đồng
7 апреля 2018 в 23:41
282
0
1

Я использую чат PubNub, подключаю Access Manager и подписываюсь на канал. Android SDK работал хорошо, но я столкнулся со многими проблемами с iOS SDK (задача C) 1. Я не мог установить secrectKey (в iOS нет для этого функции) 2. Я должен использовать решение authKey

    PNConfiguration *config = [PNConfiguration configurationWithPublishKey:kPublishKey subscribeKey:kSubscribeKey];
    config.authKey = @"maftaf5dzfVcATrHQjMahUQlEb92UNZu";
    [config setUUID:self.UUID];
    [client subscribeToChannels: @[@"myglobalchannel"] withPresence:YES];

И я получил ошибку 403

{
Category = "Access Denied";
Error = YES;
Objects =     {
    Channels =         (
        "myglobalchannel",
        "myglobalchannel-pnpres"
    );
};
Operation = Subscribe;
Region =     {
    Current = "-1";
    Previous = "<empty>";
};
Request =     {
    Authorization = maftaf5dzfVcATrHQjMahUQlEb92UNZu;
    Method = GET;
    Origin = "ps.pndsn.com";
    "POST Body size" = 0;
    Secure = YES;
    URL = "https://ps.pndsn.com/v2/subscribe/sub-c-809672b6-2c40-11e8-8305-f27a6a4e1feb/myglobalchannel,myglobalchannel-pnpres/0?deviceid=4810A924-0CD4-4C1C-A239-3E2028895F0E&uuid=pn-450E2851-77DA-47F2-A95E-F7D053F36EFE&requestid=4BD7D461-2ABE-411D-96E7-6E4F80951C5A&pnsdk=PubNub-ObjC-iOS%2F4.7.7&tt=0&instanceid=0F979806-2011-4898-A708-E5672E725FAF&auth=maftaf5dzfVcATrHQjMahUQlEb92UNZu";
    UUID = "pn-450E2851-77DA-47F2-A95E-F7D053F36EFE";
};
Response =     {
    "Processed data" =         {
        channelGroups =             (
        );
        channels =             (
            "myglobalchannel-pnpres"
        );
        information = Forbidden;
    };
    "Status code" = 403;
};
Time =     {
    Current = 0;
    Previous = 0;
};

}

Эти коды работали хорошо, если я отключил Ascee Manager и не использовал authKey. Дайте мне совет, пожалуйста

Источник
Stephen Blum
9 апреля 2018 в 20:18
0

Похоже, ваш iOS SDK подписан на каналы myglobalchannel и myglobalchannel-pnpres. Вы предоставили auth_key чтение разрешения на оба канала?

Craig Conover
10 апреля 2018 в 14:33
1

Вы никогда не должны запускать PubNub с секретным ключом в своих клиентских приложениях. Секретный ключ дает владельцу этого ключа все разрешения для всех каналов, и поэтому вы предоставляете этот ключ общественности, включая его в свои клиентские приложения. Его следует использовать только в ваших безопасных серверных приложениях с целью предоставления разрешений на ключи аутентификации, которые используются вашими клиентскими приложениями.

Mục Đồng
12 апреля 2018 в 01:44
1

@Stephen Blum: при подписке [client subscribeToChannels: @[@"myglobalchannel"] withPresence:YES]; с присутствием = true, это автоматическая подписка на myglobalchannel-pnpres, похоже, это моя проблема

Stephen Blum
12 апреля 2018 в 17:22
0

Хорошая находка! Вы можете отключить канал присутствия. Если присутствие отключено на вашем клиенте, вам не нужно будет предоставлять доступ к этому каналу.

Craig Conover
10 июня 2018 в 18:29
0

Или, если вы хотите подписаться с помощью Access Manager, вы должны предоставить доступ для чтения как к каналу, так и к его каналу -pnpres.

Ответы (0)