7even / vkontakte_api

Ruby-адаптер для ВКонтакте API
http://7even.github.com/vkontakte_api
MIT License
283 stars 68 forks source link

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

Open Ajaxy opened 9 years ago

Ajaxy commented 9 years ago

Добрый день.

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

Спасибо.

7even commented 9 years ago

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

Ajaxy commented 9 years ago

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

7even commented 9 years ago

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

Ajaxy commented 9 years ago

Спасибо.

Ajaxy commented 8 years ago

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

7even commented 8 years ago

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

Ajaxy commented 8 years ago

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

voodee commented 8 years ago

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

>> 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 8 years ago

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

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

voodee commented 8 years ago

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