SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
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/

Mais conteúdo relacionado

Semelhante a 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 PlatformRyo 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.1Katsumi 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
 
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.
 
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 BigQueryRyo Yamasaki
 
Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723Geeklog2.1新機能紹介 20140723
Geeklog2.1新機能紹介 20140723Tetsuko Komma
 

Semelhante a 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 アプリケーション
 

Mais de 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 コンテナに なれるんです LIVENobuhiro Nakajima
 
Mashup Awards は 新しい技術を試す 絶好の機会です
Mashup Awards は新しい技術を試す絶好の機会ですMashup Awards は新しい技術を試す絶好の機会です
Mashup Awards は 新しい技術を試す 絶好の機会ですNobuhiro Nakajima
 

Mais de 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 は 新しい技術を試す 絶好の機会です
 

Último

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (7)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

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/