Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Использование в iframe-приложениях ВК #1

Open
Amareis opened this issue May 5, 2016 · 4 comments
Open

Comments

@Amareis
Copy link

Amareis commented May 5, 2016

Сейчас при использовании методов библиотеки из iframe-приложения в консольку вываливается
XMLHttpRequest cannot load https://api.vk.com/method/account.getAppPermissions. No 'Access-Control-Allow-Origin' header is present on the requested resource.
Судя по коду, в методах request и method можно проксировать вызовы в нативную ВК-шную библиотеку, что должно убрать проблему с COP.

А вообще - отличная штука и появилась как раз вовремя, спасибо автору :)

UPD: Вообще, в ВК-шную библиотеку можно проксировать и методы Client API (showSettingsBox и т.д.), что значительно повысит полезность библиотеки - как минимум для меня.

deltaidea added a commit that referenced this issue May 5, 2016
Proxy API calls to the official VK JavaScript SDK when possible.

Related to #1.
deltaidea added a commit that referenced this issue May 5, 2016
For iFrame apps, use VK JavaScript SDK to init the API.

Related to #1.
deltaidea added a commit that referenced this issue May 5, 2016
@deltaidea
Copy link
Member

deltaidea commented May 5, 2016

  • Добавлен vk.authFrame, который вызывает VK.init, но поддерживает Promises.
  • vk.method теперь по возможности использует VK.api.
  • Добавлен vk.clientMethod, вызывающий VK.callMethod с теми же аргументами.
  • Добавлены алиасы для всех клиентских методов: vk.showInstallBox() и так далее.

Проверьте, пожалуйста, что оно действительно работает в фреймах (не забудьте обновиться до 0.4.0).

vk.authFrame().then(function() {
  vk.users.get()
}).then(function(currentUser) {
  vk.setTitle("Hello" + currentUser.firstName)
})

Спасибо. ;)

@deltaidea
Copy link
Member

deltaidea commented May 5, 2016

Заметки себе:

  • Добавить документацию по новым методам в docs/api.md.
  • Добавить раздельные примеры для сайтов и для фреймов в README.md.

@deltaidea deltaidea reopened this May 5, 2016
@Amareis
Copy link
Author

Amareis commented May 6, 2016

Вот это оперативность! Отличная работа, большое спасибо, всё работает как надо, протестировал.

Может, стоит тогда полностью добить методы Javascript SDK? Там осталось только добавление/снятие коллбека на события, что реализовать, видимо, крайне просто. После этого нативная либа становится вообще не нужна, её можно будет даже включать в страницу средствами самой библиотеки, при вызове authFrame.

Между прочим, само расширение (для которого вы и делаете эту либу, верно?) тоже очень занятно, я сам думал о таком. Впрочем, что-то мне подсказывает что эта библиотека будет очень популярна и как отдельный продукт, она сильно упрощает жизнь для разработчиков на "новом" JS. Собственно, нашёл я её гуглом, на libraries.io, и, вполне возможно, тем же путём её найдёт ещё множество людей. Обещаю рекламировать её как только могу :)

deltaidea added a commit that referenced this issue May 6, 2016
Add `vk.on(event, listener)` and `vk.off(event, listener)` that
call the respective `VK` methods.

Related to #1.
deltaidea added a commit that referenced this issue May 6, 2016
The VK JavaScript SDK is required for `authFrame`. It is impractical
to reimplement private APIs of that official library, so it's kept as a
dependency for iFrame methods: `authFrame`, `clientMethod`, `on`, `off`.

See https://new.vk.com/dev/Javascript_SDK

Related to #1.
@deltaidea
Copy link
Member

deltaidea commented May 6, 2016

В качестве промежуточного обновления:

  • В следующей версии будут vk.on и vk.off, вызывающие VK.addCallback и VK.removeCallback.
  • VK SDK остаётся зависимостью, потому что слишком сложно реализовать весь принцип её работы, да и не имеет смысла.
  • VK SDK по-прежнему нужно будет подключать самостоятельно. Я решил, что менеджмент зависимостей находится вне компетентности этой библиотеки. VK SDK является неявной зависимостью этой библиотеки в случае с фреймами, когда это и так необходимо. Это оставляет дерево зависимостей гибким и очевидным.

Да, эта библиотека используется в расширении vk-x, но специально вынесена в отдельный модуль под лицензией MIT, чтобы можно было использовать где угодно. ;)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants