Нюансы Google Apps Marketplace

    Прошло уже около месяца после того, как получилось таки поместить свое приложение EmForge на Google Apps Marketplace, можно сделать некоторые выводы, поделиться опытом и рассказать о некоторых нюансах




    Что такое Google Apps и Google Apps Marketplace


    Я надеюсь что большинство хабровчан уже знают что такое Google Apps — если нет — то это возможность использования набора сервисов Google как то Gmail, Calendar, Docs и прочее для свой организации под своим доменом. Судя по недавнему опросу на Хабре (правда ссылки я что-то не нашел) — многие этой возможностью уже пользуются.
    В начале марта в Google открыли Google Apps Marketplace (анонс на хабре) — возможность добавлять сторонним разработчикам свои приложения, доступные пользователям Google Apps, а администраторам доменов, использующих Google Apps — соответственно добавлять эти приложения к себе.
    Кроме анонса на хабре про marketplace вроде ничего не было, потому хочу поделится некоторым опытом от размещения нашего решения для хостинга проектов EmForge.

    Нюанс №1 — Оплата


    С точки зрения разработчика необходимо учитывать два момента:
    1. При первой попытке разместить свое приложение с вас снимут 100$. Это единовременная плата за попадание на Marketplace.
    2. Не сразу обращает на себя внимание эта часть документации, а она очень важна. Если я правильно понял перевод то:
    * Если вы берете деньги с клиентов Google Apps — вы должны «делиться» (делиться с оплаты с не-GoogleApps клиентов не надо). Делиться — это 20%
    * Что бы можно было делиться — оплата с Google Apps клиентов должна проводиться через CheckOut API. Оно еще не готово, но как будет готово — вы, как разработчик должны в течении 3-ех месяцев выполнить интеграцию. То есть — если у вас уже подключено какое-то API для снимания денег — вы должны будете завести параллельное для GoogleApps клиентов
    Вообщем-то очень существенные моменты о которых в анонсах не писали и не сразу и заметишь. В моем случае у EmForge пока все сервисы бесплатные и биллинга никакого нет, так что можно и CheckOut прикрутить — но если с Google Apps интегрируется какое-то существующее приложение с уже созданным и оттестированным биллингом — могут быть проблемы

    Как это выглядит для программиста


    предположим у вас есть некоторый сервис и вы хотите расширить аудиторию за счет Google Apps. Минимально необходимо и достаточное требование — это организация Single-Sign-On поддерживающий логин через OpenID. Там есть несколько технических нюансов связанных с openID для доменов использующих Google Apps — но об этом подробней. Так же вы можете интегрироваться со многими Google API — как то ContactAPI, CalendarAPI и др. обеспечивая более тесную интеграцию. По этому поводу на Google Code есть отдельный большой раздел
    После реализации оного вы регистрируетесь на Google Apps Marketplace, составляете страничку с описанием себя как vendor-а (например как у нас), размещаете свое приложение (при первом размещении с вас попросят 100$).
    Далее следует период Approve — сотрудники Google будут тестировать как ваше приложение интегрируется Google Apps — Опять-таки — минимальное требование — что бы работал SSO
    В моем случае — из-за проблем с реализацией SSO — это заняло несколько итераций и 3 календарные недели. Надо сказать, что связь не односторонняя, когда к вам приходит сообщение что ваше приложение не прошло тест, вы можете написать вопросы, попросив детали — и даже получите ответ. Правда итерация вопрос-ответ обычно занимает 2-3 дня — так что все может затянуться (как например у меня).
    В итоге после того как приложение получает approve — страничка с вашим приложением оказывается на Google Apps Marketplace (опять-таки например как у нас).

    Мониторинг страницы приложения


    Один момент который может быть не понятен — при редактировании страницы приложения, у вас будет возможность (опциональная) — вверсти ID Google Analytics — это дает возможность мониторить количество посещений данной страницы на marketplace — эта информация может быть полезна.

    Как это выглядит для конечного пользователя


    Администратор какого-нибудь домена выбирает ваше приложение для установки — после нескольких установочных форм — например спрашивающих дать ли доступ к запрошенным API (кстати — вы можете добавить свою форму со своими специфичными настройками) — приложение оказывается среди прочих приложений Google Apps.
    Конечные пользователи получают доступ к приложению через "Universal Navigation Bar" — это та менюшка сверху в Gmail, где перечислены почта, календарь, документы и прочее — так вот среди прочего появится и ваше приложение.
    При клике на вашем приложении, пользователь будет направлен по специальному URL на ваш сервис, в URL среди параметров будет проставлено имя домена. Ваше приложение должно сделать редирект на OpenID провайдер, провайдер автоматически разрешит логин (в данном случае у пользователя ничего не спрашивается — админ домена уже все разрешил) — и идет редирект обратно на ваш сервис. Вы должны получить и обработать openId информацию и автоматически залогинить пользователя. Так как у конечного пользователя в данном случае ничего не спрашивается а редиректы проходят практически незаметно — по факту пользователь видет, что после клика на линке он уже залогинен в ваш сервис, вы знаете кто он, откуда и как его зовут (email, имя пользователя можно получить от openId провайдера). Это и есть Single-Sign-On.
    Ну а что дальше делать с этим пользователем — это уже ваше дело :)

    Нюанс №2 — специфика OpenID для доменов Google Apps


    Вообщем-то OpenID — тема уже достаточно старая, на хабре многократно обсуждалась, многие сервисы поддерживают логин через openID. если ваш тоже — вам будет проще.
    Но — есть несколько нюансов связанных с обработкой openID для доменов под Google Apps.
    Дело в том, что несмотря на то, что openId аккаунт в данном случае будет выглядеть как mydomain.com/openId?id=xxxx — провайдером является Google (URL провайдера будет выглядеть как www.google.com/accounts/o8/site-xrds?hd=mydomain.com)
    Достаточно важная информация про openID login consumer (в данном случае ваше приложение) может получить из host-meta, но его надо брать не с пути по умолчанию (http://mydomain.com/.host-meta, а тоже с гугла: www.google.com/accounts/o8/.well-known/host-meta?hd=mydomain.com)
    Плюс к этому, домен который используется для тестирования сотрудниками google (marketplace-test.com) хостится на Google Sites, запрос marketplace-test.com/host-meta производит редирект на sites.google.com — и там вы получите некоторый HTML (вместо ожидаемой в моем случае ошибки 404 — что бы понять что host-meta тут нет и ее надо искать в гугле) — что тоже может приводить к некорректной обработке.
    Если вы используете Java — то очень рекомендую воспользоваться библиотекой step2, а особенно обратить внимание на их пример consumer-а, где как раз присутствуют все необходимые «трюки».
    Если вы используете Spring Framework — то можно воспользоваться моей библиотечкой spring-security-step2.
    Для других языков тоже должны быть решения — но тут я уже не в курсе.

    Интеграция с другими сервисами


    В описании приложения вы можете так же указать, какие сервисы google apps оно будет использовать. При установке приложения админ домена даст вам доступ, после чего вы сможете использовать данные сервисы без дополнительной OAuth авторизации — что мне кажется удобней.
    Подробней можно прочитать тут

    Несколько советов разработчикам


    На основании вышесказанного осмелюсь дать несколько советов разработчикам, реализующим интеграцию с Google Apps:
    1. Обязательно добавьте GoogleHostedHostMetaFetcher (смотрите step2 consumer пример);
    2. Для тестирования используйте браузер в «приватном»режиме
    3. При тестировании постарайтесь симулировать ситуацию, когда запрос на host-meta c вашего домена (http://mydomain.com/host-meta) выдает что-то отличное от ошибке 404 (например некоторый html)
    4. Включите логи на максимум (по крайней мере на время пока проходите approve) — я попал в ситуацию когда " у меня все работало, а у них нет". Единственный способ что-либо понять — почему в случае с доменом marketplace-test.com — это логи
    5. Если вы получили отказ в approve — но вам непонятно почему, или есть дополнительные вопросы — не стесняйтесь спрашивать (просто ответом на письмо которое вам придет из Google с описанием проблемы) — сотрудники Google честно отрабатывают ваши 100$ заплаченные за «вход» на marketplace, но учтите, итерация вопрос-ответ может занять 2-3 дня.

    А что в итоге?


    Приложений на Google Apps Marketplace мало (пока). Так что — сразу после попадания на marketplace мое приложение оказалось на второй (она же последняя) странице в категории Project Management
    Просмотров страницы на marketplace около 20-ти в день, переходов на сайт 1-2.
    После первого положительного отзыва приложение переместилось на первую страницу — просмотров страницы около 100 в день, переходов около 5-ти.
    Понятно, что конверсию в моем случае можно улучшать. Понятно что поднявшись на верх первой страницы можно получить больше просмотров и больше переходов. Понятно что в другой категории в принципе может быть больше потенциальных пользователей, но порядок я думаю не поменяется.
    То есть, как мне кажется, писать приложение полностью. ориентированное на Google Apps — пока еще смысла нет, добавить интеграцию с Google Apps к существующему приложению — да, можно, но не надо ожидать огромного потока новых пользователей.

    Надеюсь что мой опыт окажется полезен. Будут вопросы — пишите «в личку».

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 5

      +1
        +1
        Не плохо бы написать, что за EmForge для тех кто впервые о нем слышит или указать ссылку на вашу первую статью
          +1
          В данном случае EmForge — просто приложение интегрированное с Google Apps — и на примере которого и был получен опыт описанный в статье. Статья вся-таки про Google Apps Marketplace.
          Но если кому-то интересно — EmForge — это платформа коллективной разработки, вот анонс EmForge на Хабре
          +1
          Спасибо за пост! Было бы интересно еще посмотреть примеры кода и советы по написанию.
            0
            Примеры кода сильно зависят от языка программирования. Для PHP & Java есть примеры на Google Code — они вполне адекватные.
            По поводу поддержки OpenID — мне кажется свое лучше не писать (зачем изобретать велосипед) — а взять готовую библиотека (например тот же Step2 для явы).

            Если говорить про исходники EmForge — то часть ответственная за openID & Google Apps доступна сайте — но код очень сильно специфичен для Liferay (на котором построен EmForge)

            Only users with full accounts can post comments. Log in, please.