Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Google AppEngine で作る
Google Apps Marketplace
     対応サービス
     appengine ja night #10
         2010年8月30日
  なかじまんソフトウェア株式会社...
OpenSocial Pages for Google Apps
http://opensocial-pages.appspot.com/
             • Google Apps のユーザとグ
               ループ...
本日のゴール
• Google Apps Marketplace とは何か
  Google Apps に Product をインストールすると
  はどういうことか
• Application Manifest とは何か
  Google A...
Google Apps Marketplace とは何か
Google Apps Marketplace
http://www.google.com/enterprise/marketplace/

 利用                                    提供


       ...
Google Apps Marketplace
      主な Vendor




                          6
Google Apps Marketplace に
      掲載できる内容と条件
• Vendor (会社情報)
• Product (製品情報)
 – Installable (直接インストール)
   • OpenID Single-S...
Vendor
                             (会社情報)




   Product
  (製品情報)
                    Add it now
                  (インストー...
Installable な Product を利用できる
     Google Apps Edition とユーザ
• Google Apps Edition
  –Premier                   未確認
        ...
Product をインストールすると
Google Apps のサービスの1つになる
              Administrator
                (管理者)

                           U...
Google Apps Developer Program Site
          Sell Marketplace Apps
             Payment Policy
http://developer.googleapps...
Google Apps Marketplace から
Google Apps に Product を
インストールするとはどういうことか
Google Apps Marketplace から
Google Apps に Product をインストール
Add it now ボタン   Google Apps ドメイン名
 をクリックして …          を入力して GO

...
Google Apps Marketplace 及び
Product の利用規約への同意




                利用規約は
       Product (製品情報)で設定する
Product から Google Apps への
    データアクセスの許可




           データアクセスの範囲と理由は
           Application Manifest で定義する
Product は Google AppEngine
   でホストし、マルチテナントな構成
http://opensocial-pages.appspot.com/a/${DOMAIN_NAME}/
 Product の利用



     ...
Application Manifest とは何か
Application Manifest 1/4
             製品のサポート情報
<?xml version="1.0" encoding="UTF-8" ?>
<ApplicationManifest
  xmlns="http...
Application Manifest 2/4
       Google's Universal Navigation
<Extension id="navLink" type="link">
 <Name>OpenSocial Pages...
Application Manifest 3/4
     OpenID 承認ステップのスキップ
<Extension id="realm" type="openIdRealm">
  <Url>http://opensocial-pages....
Application Manifest 4/4
         データアクセスの範囲と理由
<Scope id="UserFeed"> <!– Provisioning API (read only) -->
 <Url>https://a...
Google Apps Marketplace に
Product を掲載する手順
Google Apps Marketplace
Product の開発から公開までの流れ
Vendor (会社情報) と
Product (製品情報) の登録
  Product の開発とテスト
  Vendor は公開前でもインストールできる...
Vendor (会社情報)
• Company logo
• Vendor name
• Phone number
• Email address
• Home page URL
• Address line
• Town
• Zip/post...
Product (製品情報)
• My product may be directly
installed into Google Apps
domains
• Category
                        On
• Nam...
OpenID Single-Sign On:
Google OpenID Federated Login
Authentication Options:
 (Experimental) Federated Login
Google AppEngine
Application Settings
ログイン画面への誘導
UserService userService =
   UserServiceFactory.getUserService();
String loginUri = userService.createLoginURL(...
ログアウト画面への誘導
UserService userService =
  UserServiceFactory.getUserService();
String logoutUrl =
  userService.createLogout...
UserService で取得できる情報 1/2
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrent...
UserService で取得できる情報 2/2
UserService userService = UserServiceFactory.getUserService();
userService.isUserAdmin();
  true ...
2-legged OAuth for Data:
Google Apps Provisioning API
Google Data Java Client Library
Google Apps Provisioning API で必要なファイル
• gdata-core-1.0.jar
• gdata-client-1.0.jar
• gdata-...
View OAuth Consumer Key
        Consumer Key / Key Secret
                                   Google Apps Marketplace
     ...
Google Apps Provisioning API
            User 情報の取得
UserService service = new UserService("User");
service.setOAuthCredent...
Google Apps Provisioning API
           Group 情報の取得
AppsPropertyService service =
   new AppsPropertyService("AppsProperty...
Google Apps Provisioning API
       Group メンバー情報の取得
AppsPropertyService service =
   new AppsPropertyService("AppsProperty...
情報源
Google Apps Marketplace
http://www.google.com/enterprise/marketplace/
Google Apps Developer Program Site
http://develo...
Upcoming SlideShare
Loading in …5
×

appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス

6,476 views

Published on

• Google Apps Marketplace とは何か
• Google Apps にProduct をインストールすると
はどういうことか
• Application Manifest とは何か
Google Apps Marketplace にProduct を掲載す
る手順
• AppEngine からOpenID Single-Sign On と2-
legged OAuth for Data を使ってGoogle Apps と
連携する方法
• 情報源

Published in: Technology
  • Be the first to comment

appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス

  1. 1. Google AppEngine で作る Google Apps Marketplace 対応サービス appengine ja night #10 2010年8月30日 なかじまんソフトウェア株式会社 中嶋 信博 @nakajiman Google API Expert (OpenSocial)
  2. 2. OpenSocial Pages for Google Apps http://opensocial-pages.appspot.com/ • Google Apps のユーザとグ ループをソーシャルグラフとし て、ドメイン専用 OpenSocial コンテナが持てる • PC に加えて Smart Phone で も OpenSocial ガジェットが快 適に動作するアーキテクチャ • Google AppEngine でホストし て Google Apps Marketplace に対応 • ソースコードも入手可
  3. 3. 本日のゴール • Google Apps Marketplace とは何か Google Apps に Product をインストールすると はどういうことか • Application Manifest とは何か Google Apps Marketplace に Product を掲載す る手順 • AppEngine から OpenID Single-Sign On と 2- legged OAuth for Data を使って Google Apps と 連携する方法 • 情報源
  4. 4. Google Apps Marketplace とは何か
  5. 5. Google Apps Marketplace http://www.google.com/enterprise/marketplace/ 利用 提供 利用 Google Vendor Apps
  6. 6. Google Apps Marketplace 主な Vendor 6
  7. 7. Google Apps Marketplace に 掲載できる内容と条件 • Vendor (会社情報) • Product (製品情報) – Installable (直接インストール) • OpenID Single-Sign On – Google AppEngine – その他 • Gmail Contextual Gadget – Not Installable • Service (サービス情報)
  8. 8. Vendor (会社情報) Product (製品情報) Add it now (インストールボタン) Customer Review (レビュー)
  9. 9. Installable な Product を利用できる Google Apps Edition とユーザ • Google Apps Edition –Premier 未確認 教えてください –Standard –Education, Government, Non-profit ? • User Privileges (権限) – Administrator (管理者) -- インストールと設定 – User (一般) -- 利用
  10. 10. Product をインストールすると Google Apps のサービスの1つになる Administrator (管理者) User (一般)
  11. 11. Google Apps Developer Program Site Sell Marketplace Apps Payment Policy http://developer.googleapps.com/marketplace/fees Revenue share Vender : Google = 80 : 20 Google Checkout API Automatic Billing or Self Reported Billing
  12. 12. Google Apps Marketplace から Google Apps に Product を インストールするとはどういうことか
  13. 13. Google Apps Marketplace から Google Apps に Product をインストール Add it now ボタン Google Apps ドメイン名 をクリックして … を入力して GO すると … Google Apps に遷移する
  14. 14. Google Apps Marketplace 及び Product の利用規約への同意 利用規約は Product (製品情報)で設定する
  15. 15. Product から Google Apps への データアクセスの許可 データアクセスの範囲と理由は Application Manifest で定義する
  16. 16. Product は Google AppEngine でホストし、マルチテナントな構成 http://opensocial-pages.appspot.com/a/${DOMAIN_NAME}/ Product の利用 Google AppEngine ログイン OpenID Single Sign-On データアクセス 2-legged OAuth for Data <?xml version <Application Application Manifest xmlns= … Manifest Add it now ボタン Google 利用規約の同意 Google Apps データアクセスの認可 Apps Marketplace
  17. 17. Application Manifest とは何か
  18. 18. Application Manifest 1/4 製品のサポート情報 <?xml version="1.0" encoding="UTF-8" ?> <ApplicationManifest xmlns="http://schemas.google.com/ApplicationManifest/2009"> <Support> <Link rel="manage" href="http://opensocial-pages.appspot.com /a/${DOMAIN_NAME}/controlpanel“ /> <!– 製品の管理ページ --> <Link rel="support" href="http://sites.google.com/a/lrlab.to/opensocial-pages/" /> </Support> <!– 製品のサポートページ --> <Name>OpenSocial Pages</Name> <!– 製品名 -->
  19. 19. Application Manifest 2/4 Google's Universal Navigation <Extension id="navLink" type="link"> <Name>OpenSocial Pages</Name> <!– リンク名 --> <Url>http://opensocial- pages.appspot.com/a/${DOMAIN_NAME}/</Url> <!– リンク先 --> <Scope ref="UserFeed" /> <Scope ref="GroupFeed" /> Google‘s Universal Navigation </Extension>
  20. 20. Application Manifest 3/4 OpenID 承認ステップのスキップ <Extension id="realm" type="openIdRealm"> <Url>http://opensocial-pages.appspot.com</Url> </Extension> インストールした時点で 許可したとみなして スキップして表示しない
  21. 21. Application Manifest 4/4 データアクセスの範囲と理由 <Scope id="UserFeed"> <!– Provisioning API (read only) --> <Url>https://apps-apis.google.com/a/feeds/user/#readonly</Url> <Reason>For the admin interface: This allows you …</Reason> </Scope> <Scope id="GroupFeed"> <!– Provisioning API (read only) --> <Url>https://apps-apis.google.com/a/feeds/group/#readonly</Url> <Reason>For the admin interface: This allows you …</Reason> </Scope> </ApplicationManifest>
  22. 22. Google Apps Marketplace に Product を掲載する手順
  23. 23. Google Apps Marketplace Product の開発から公開までの流れ Vendor (会社情報) と Product (製品情報) の登録 Product の開発とテスト Vendor は公開前でもインストールできる Google Marketplace への公開申請 Google Checkout で 100 ドル支払い Google Marketplace による審査 結果は48時間以内にメールで通知 Google Marketplace の掲載開始 誰でもインストールできる
  24. 24. Vendor (会社情報) • Company logo • Vendor name • Phone number • Email address • Home page URL • Address line • Town • Zip/post code • Country • Vendor overview
  25. 25. Product (製品情報) • My product may be directly installed into Google Apps domains • Category On • Name • Summary Overview • Full Overview • Application Manifest • Pricing Summary • Terms of Service • Benefit points / External links • Screenshot / Logo • Screencast / Video or success story collateral • Version information • Google Analytics • Google APIs
  26. 26. OpenID Single-Sign On: Google OpenID Federated Login
  27. 27. Authentication Options: (Experimental) Federated Login Google AppEngine Application Settings
  28. 28. ログイン画面への誘導 UserService userService = UserServiceFactory.getUserService(); String loginUri = userService.createLoginURL( "/", // ログイン後のリダイレクト先 "", "n35.com", // Google Apps ドメイン名 new HashSet<String>() // 無効っぽい? ); response.sendRedirect(loginUri);
  29. 29. ログアウト画面への誘導 UserService userService = UserServiceFactory.getUserService(); String logoutUrl = userService.createLogoutURL("/"); request.setAttribute("logoutUrl", logoutUrl);
  30. 30. UserService で取得できる情報 1/2 UserService userService = UserServiceFactory.getUserService(); User user = userService.getCurrentUser(); user.getAuthDomain(); // ドメイン名じゃないので注意! https://www.google.com/a/n35.com/o8/ud?be user.getUserId(); 102200252690973622441 user.getFederatedIdentity(); http://n35.com/openid?id=114998333651267920533 user.getEmail(); nakajiman@n35.com user.getNickname(); // 名前は AX で取得できない? nakajiman@n35.com
  31. 31. UserService で取得できる情報 2/2 UserService userService = UserServiceFactory.getUserService(); userService.isUserAdmin(); true // Google Apps の Administrator ではないです! userService.isUserLoggedIn(); true
  32. 32. 2-legged OAuth for Data: Google Apps Provisioning API
  33. 33. Google Data Java Client Library Google Apps Provisioning API で必要なファイル • gdata-core-1.0.jar • gdata-client-1.0.jar • gdata-appsforyourdomain-1.0.jar
  34. 34. View OAuth Consumer Key Consumer Key / Key Secret Google Apps Marketplace Vender (会社情報) GoogleOAuthParameters params = new GoogleOAuthParameters(); params.setOAuthConsumerKey("Consumer Key"); params.setOAuthConsumerSecret("Consumer Secret"); params.setOAuthType(OAuthType.TWO_LEGGED_OAUTH);
  35. 35. Google Apps Provisioning API User 情報の取得 UserService service = new UserService("User"); service.setOAuthCredentials(params, new OAuthHmacSha1Signer()); service.useSsl(); URL url = new URL("https://apps-apis.google.com/a/feeds" + "/n35.com/user/2.0/nakajiman"); UserEntry user = service.getEntry(url, UserEntry.class); String givenName = user.getName().getGivenName(); String familyName = user.getName().getFamilyName(); boolean admin = user.getLogin().getAdmin();
  36. 36. Google Apps Provisioning API Group 情報の取得 AppsPropertyService service = new AppsPropertyService("AppsProperty"); service.setOAuthCredentials(params, new OAuthHmacSha1Signer()); service.useSsl(); URL url = new URL("https://apps-apis.google.com/a/feeds" + "/group/2.0/n35.com/sales@n35.com"); GenericEntry group = service.getEntry(url, GenericEntry.class); String title = group.getProperty("groupName"); String description = group.getProperty("description");
  37. 37. Google Apps Provisioning API Group メンバー情報の取得 AppsPropertyService service = new AppsPropertyService("AppsProperty"); service.setOAuthCredentials(params, new OAuthHmacSha1Signer()); service.useSsl(); URL url = new URL("https://apps-apis.google.com/a/feeds" + "/group/2.0/n35.com/sales@n35.com/member"); GenericFeed members = service.getFeed(url, GenericFeed.class); for (GenericEntry member : members.getEntries()) { String memberId = member.getProperty("memberId");
  38. 38. 情報源 Google Apps Marketplace http://www.google.com/enterprise/marketplace/ Google Apps Developer Program Site http://developer.googleapps.com/ Google Apps APIs (en) http://code.google.com/intl/en/googleapps/ Google Data Java Client Library http://code.google.com/p/gdata-java-client/ OpenSocial Pages for Google Apps http://opensocial-pages.appspot.com/

×