appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 6,133 views

• Google Apps Marketplace とは何か ...

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

Statistics

Views

Total Views
6,133
Views on SlideShare
5,991
Embed Views
142

Actions

Likes
2
Downloads
29
Comments
0

4 Embeds 142

http://hkzo.org 139
http://paper.li 1
http://feeds.feedburner.com 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • Google AppEngine で作る Google Apps Marketplace 対応サービス appengine ja night #10 2010年8月30日 なかじまんソフトウェア株式会社 中嶋 信博 @nakajiman Google API Expert (OpenSocial)
  • OpenSocial Pages for Google Apps http://opensocial-pages.appspot.com/ • Google Apps のユーザとグ ループをソーシャルグラフとし て、ドメイン専用 OpenSocial コンテナが持てる • PC に加えて Smart Phone で も OpenSocial ガジェットが快 適に動作するアーキテクチャ • Google AppEngine でホストし て Google Apps Marketplace に対応 • ソースコードも入手可
  • 本日のゴール • Google Apps Marketplace とは何か Google Apps に Product をインストールすると はどういうことか • Application Manifest とは何か Google Apps Marketplace に Product を掲載す る手順 • AppEngine から OpenID Single-Sign On と 2- legged OAuth for Data を使って Google Apps と 連携する方法 • 情報源 View slide
  • Google Apps Marketplace とは何か View slide
  • Google Apps Marketplace http://www.google.com/enterprise/marketplace/ 利用 提供 利用 Google Vendor Apps
  • Google Apps Marketplace 主な Vendor 6
  • Google Apps Marketplace に 掲載できる内容と条件 • Vendor (会社情報) • Product (製品情報) – Installable (直接インストール) • OpenID Single-Sign On – Google AppEngine – その他 • Gmail Contextual Gadget – Not Installable • Service (サービス情報)
  • Vendor (会社情報) Product (製品情報) Add it now (インストールボタン) Customer Review (レビュー)
  • Installable な Product を利用できる Google Apps Edition とユーザ • Google Apps Edition –Premier 未確認 教えてください –Standard –Education, Government, Non-profit ? • User Privileges (権限) – Administrator (管理者) -- インストールと設定 – User (一般) -- 利用
  • Product をインストールすると Google Apps のサービスの1つになる Administrator (管理者) User (一般)
  • 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
  • Google Apps Marketplace から Google Apps に Product を インストールするとはどういうことか
  • Google Apps Marketplace から Google Apps に Product をインストール Add it now ボタン Google Apps ドメイン名 をクリックして … を入力して GO すると … Google Apps に遷移する
  • Google Apps Marketplace 及び Product の利用規約への同意 利用規約は Product (製品情報)で設定する
  • Product から Google Apps への データアクセスの許可 データアクセスの範囲と理由は Application Manifest で定義する
  • 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
  • Application Manifest とは何か
  • 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> <!– 製品名 -->
  • 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>
  • Application Manifest 3/4 OpenID 承認ステップのスキップ <Extension id="realm" type="openIdRealm"> <Url>http://opensocial-pages.appspot.com</Url> </Extension> インストールした時点で 許可したとみなして スキップして表示しない
  • 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>
  • Google Apps Marketplace に Product を掲載する手順
  • Google Apps Marketplace Product の開発から公開までの流れ Vendor (会社情報) と Product (製品情報) の登録 Product の開発とテスト Vendor は公開前でもインストールできる Google Marketplace への公開申請 Google Checkout で 100 ドル支払い Google Marketplace による審査 結果は48時間以内にメールで通知 Google Marketplace の掲載開始 誰でもインストールできる
  • Vendor (会社情報) • Company logo • Vendor name • Phone number • Email address • Home page URL • Address line • Town • Zip/post code • Country • Vendor overview
  • 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
  • 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( "/", // ログイン後のリダイレクト先 "", "n35.com", // Google Apps ドメイン名 new HashSet<String>() // 無効っぽい? ); response.sendRedirect(loginUri);
  • ログアウト画面への誘導 UserService userService = UserServiceFactory.getUserService(); String logoutUrl = userService.createLogoutURL("/"); request.setAttribute("logoutUrl", logoutUrl);
  • 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
  • UserService で取得できる情報 2/2 UserService userService = UserServiceFactory.getUserService(); userService.isUserAdmin(); true // Google Apps の Administrator ではないです! userService.isUserLoggedIn(); 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-appsforyourdomain-1.0.jar
  • 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);
  • 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();
  • 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");
  • 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");
  • 情報源 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/