SlideShare a Scribd company logo
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 と
  連携する方法
• 情報源
Google Apps Marketplace とは何か
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/

More Related Content

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

Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してくださいGoogle Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Nobuhiro Nakajima
 
Google+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 WinterGoogle+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 WinterNobuhiro Nakajima
 
Windows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようWindows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようjunichi anno
 
Report of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud PlatformReport of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud Platform
Ryo Yamasaki
 
Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1
Katsumi Onishi
 
Google I/O 2016 報告会
Google I/O 2016 報告会Google I/O 2016 報告会
Google I/O 2016 報告会
shingo suzuki
 
Google のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきことGoogle のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきこと
Compare GW
 
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
decode2016
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説kumo2010
 
AppPot製品概要
AppPot製品概要AppPot製品概要
AppPot製品概要
Ryohei Sogo
 
アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方
アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方
アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方
makiskmt
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
Shumpei Shiraishi
 
2015年をRTBのアプリ広告元年とするために
2015年をRTBのアプリ広告元年とするために2015年をRTBのアプリ広告元年とするために
2015年をRTBのアプリ広告元年とするために
Toshiaki Ishibashi
 
単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討
Akira Niiyama
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Socialngi group.
 
Social Enterprise Java Apps on Heroku Webinar
Social Enterprise Java Apps on Heroku WebinarSocial Enterprise Java Apps on Heroku Webinar
Social Enterprise Java Apps on Heroku Webinar
Salesforce Developers Japan
 
appengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryappengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQuery
Ryo Yamasaki
 
Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723
Tetsuko Komma
 
Force.com Canvas アプリケーション
Force.com Canvas アプリケーションForce.com Canvas アプリケーション
Force.com Canvas アプリケーション
Salesforce Developers Japan
 

Similar to appengine ja night #10 Google AppEngine で作る Google Apps Marketplace 対応サービス (20)

Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してくださいGoogle Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
 
Google+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 WinterGoogle+ API の紹介 - Google Social Developers 2011 Winter
Google+ API の紹介 - Google Social Developers 2011 Winter
 
Windows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげようWindows PhoneアプリをSNSとつなげよう
Windows PhoneアプリをSNSとつなげよう
 
Report of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud PlatformReport of Google I/O 2013 Google Cloud Platform
Report of Google I/O 2013 Google Cloud Platform
 
Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1Google I/O 2012 and Android 4.1
Google I/O 2012 and Android 4.1
 
Google I/O 2016 報告会
Google I/O 2016 報告会Google I/O 2016 報告会
Google I/O 2016 報告会
 
Google のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきことGoogle のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきこと
 
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
DEV-015_実践! App Service 徹底活用 ~一貫したビジネスロジックの実現~
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説
 
AppPot製品概要
AppPot製品概要AppPot製品概要
AppPot製品概要
 
アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方
アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方
アンドロイド電子書籍アプリ作成キットを使ったアプリの作り方
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
2015年をRTBのアプリ広告元年とするために
2015年をRTBのアプリ広告元年とするために2015年をRTBのアプリ広告元年とするために
2015年をRTBのアプリ広告元年とするために
 
単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討単機能Twitter クライアント試作のための各種方法の検討
単機能Twitter クライアント試作のための各種方法の検討
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
 
Social Enterprise Java Apps on Heroku Webinar
Social Enterprise Java Apps on Heroku WebinarSocial Enterprise Java Apps on Heroku Webinar
Social Enterprise Java Apps on Heroku Webinar
 
PFI Seminar 2012/02/24
PFI Seminar 2012/02/24PFI Seminar 2012/02/24
PFI Seminar 2012/02/24
 
appengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQueryappengine ja night #24 Google Cloud Endpoints and BigQuery
appengine ja night #24 Google Cloud Endpoints and BigQuery
 
Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723
 
Force.com Canvas アプリケーション
Force.com Canvas アプリケーションForce.com Canvas アプリケーション
Force.com Canvas アプリケーション
 

More from Nobuhiro Nakajima

i.ntere.st Overview
i.ntere.st Overviewi.ntere.st Overview
i.ntere.st Overview
Nobuhiro Nakajima
 
#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビュー できちゃう Chrome Ex...
#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビューできちゃう Chrome Ex...#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビューできちゃう Chrome Ex...
#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビュー できちゃう Chrome Ex...Nobuhiro Nakajima
 
OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)
OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)
OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)
Nobuhiro Nakajima
 
#MA6 Mashup Camp - Social Platform Day
#MA6 Mashup Camp - Social Platform Day#MA6 Mashup Camp - Social Platform Day
#MA6 Mashup Camp - Social Platform DayNobuhiro Nakajima
 
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...Nobuhiro Nakajima
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2Nobuhiro Nakajima
 
今すぐ誰でも OpenSocial コンテナに なれるんです LIVE
今すぐ誰でもOpenSocial コンテナになれるんです LIVE今すぐ誰でもOpenSocial コンテナになれるんです LIVE
今すぐ誰でも OpenSocial コンテナに なれるんです LIVE
Nobuhiro Nakajima
 
Mashup Awards は 新しい技術を試す 絶好の機会です
Mashup Awards は新しい技術を試す絶好の機会ですMashup Awards は新しい技術を試す絶好の機会です
Mashup Awards は 新しい技術を試す 絶好の機会です
Nobuhiro Nakajima
 

More from Nobuhiro Nakajima (8)

i.ntere.st Overview
i.ntere.st Overviewi.ntere.st Overview
i.ntere.st Overview
 
#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビュー できちゃう Chrome Ex...
#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビューできちゃう Chrome Ex...#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビューできちゃう Chrome Ex...
#MA6 Mashup Lightning Talks #114 ATND Draft イベントの下書き保存とプレビュー できちゃう Chrome Ex...
 
OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)
OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)
OSDE と OpenSocial jQuery で作る簡単ソーシャルアプリ (1/3)
 
#MA6 Mashup Camp - Social Platform Day
#MA6 Mashup Camp - Social Platform Day#MA6 Mashup Camp - Social Platform Day
#MA6 Mashup Camp - Social Platform Day
 
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
Google Dev Fest 2010 Japan LT: OpenSocial JavaScript API is good, Lightweight...
 
SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2SocialWeb Conference vol.5 OpenSocial Night #2
SocialWeb Conference vol.5 OpenSocial Night #2
 
今すぐ誰でも OpenSocial コンテナに なれるんです LIVE
今すぐ誰でもOpenSocial コンテナになれるんです LIVE今すぐ誰でもOpenSocial コンテナになれるんです LIVE
今すぐ誰でも OpenSocial コンテナに なれるんです LIVE
 
Mashup Awards は 新しい技術を試す 絶好の機会です
Mashup Awards は新しい技術を試す絶好の機会ですMashup Awards は新しい技術を試す絶好の機会です
Mashup Awards は 新しい技術を試す 絶好の機会です
 

Recently uploaded

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 

Recently uploaded (15)

MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 

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

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