7even/vkontakte_api

Поддержка двух VK приложений одновременно

Ajaxy opened this issue · 10 comments

Ajaxy commented

Добрый день.

Могу ли я настроить поддержку двух VK App ID одновременно? Сейчас я вижу, что настройки задаются глобально для класса VkontakteApi. Мне это нужно, так как у меня есть два App ID — одно для VK Iframe, другое для Standalone приложения в iOS.

Спасибо.

7even commented

Пока такой возможности нет, это архитектурный косяк. Подумаю, как это исправить.

Ajaxy commented

Я могу какой-то workaround у себя сейчас запилить?

7even commented

Если токен приходит "извне" (т.е. не через VkontakteApi.authorize), то можно перед каждым вызовом метода API делать VkontakteApi.configure с нужными настройками - коряво, но должно работать.

Ajaxy commented

Спасибо.

Ajaxy commented

Есть какие-нибудь новости тут?
Можно ли вызывать каждый раз VkontakteApi.configure + VkontakteApi.authorize перед каждым запросом?

7even commented

Новостей нет, выполнять configure и authorize можно. Только, наверно, не перед каждым запросом, а при переключении между App Id.

Ajaxy commented

Переключение через configure на практике не работает. Почему, выяснить не удалось. Но access_token после повторного вызова configure с другими данными получается неверный (VK возвращает ошибку).

Срабатывает только один раз:

>> VkontakteApi.configure{|c| c.app_id = 000; c.app_secret=""; }
VkontakteApi
>> @vk = VkontakteApi.authorize(type: :app_server)
OAuth2::Error: invalid_client: client_secret is undefined

При повторных вызовах VkontakteApi.configure app_secret не меняется.

В gemfile:
gem 'vkontakte_api', github: '7even/vkontakte_api', branch: 'master'

7even commented

Скорее всего, проблема в этой строчке.

Как временный костыль, можно попробовать сделать VkontakteApi.instance_variable_set(:@client, nil) перед вызовом VkontakteApi.configure.

Да, так работает. Спасибо!