Клуб API Диска

Ошибка вида: SDK error: You must be logged in before starting to work with SDK? try to call AuthorizeAsync()

Ошибка вида: SDK error: You must be logged in before starting to work with SDK? try to call AuthorizeAsync()

Ошибка появляется только для новых созданных почтовых ящиков, не логиниться и все, со старыми все работает нормально, каталоги и файлы читаются, в чем может быть проблема?

2 комментария
Куликов Роман
19 апреля 2016, 22:44
Нашел кое какое решение: e.sender в данной строке:

this.AuthCompleted(this, new GenericSdkEventArgs<string>((e.Result)));

e.Result не возвращает код аутентификации а возвращает пустое значение, это происходит только с новыми аккаунтами созданными в последнее время, когда это точно началось не известно.

Если вместо (e.Result) вставить код авторизации из открытого WebBrowser с аутентификацией, то приложение нормально авторизуется и нормально работает. Пожалуйста разработчики проверьте ваш код SDK из примера.
Скачал официальный SDK с GitHub, возникла та же ошибка. Причина оказалась в регулярке, которая парсит AccessToken (Disk.SDK/Utils/WebDavResources.resx/TokenRegexPattern) - в SDK она ищет выражение длиной 32 символа, а реально ЯДиск дает AccessToken длиной 39 символов.
Кроме того, ошибка возникла в Disk.SDK/Utils/ResponseParser.cs, метод ParseItems.
Некорректно считывается d:getcontentlength, перед приведением к Int32 необходимо проверять на пустое значение строки.
Надеюсь, это сэкономит кому-нибудь время, так как информации по данным ошибкам на форумах не нашел.