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 対応サービス

5,739

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
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,739
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
30
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "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/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×