SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Copyright©2016 NTT corp. All Rights Reserved.
Spring Socialの基礎
2016年3月9日
NTT ソフトウェアイノベーションセンタ
岩塚 卓弥
2Copyright©2016 NTT corp. All Rights Reserved.
• 名前:岩塚 卓弥
• 所属:NTT ソフトウェアイノベーションセンタ
• 専門:ソフトウェア工学 / プログラミング言語理論
グループ向けフレームワーク整備の担当でSpringを利用
自己紹介
3Copyright©2016 NTT corp. All Rights Reserved.
Spring Social
Main Project
Spring Social Core
Spring Social Facebook
Spring Social Twitter
Spring Social LinkedIn
Incubator Project
Spring Social GitHub
Spring Social TripIt
コア以外は各API用のサブプロジェクト
4Copyright©2016 NTT corp. All Rights Reserved.
多数のCommunity Project
5Copyright©2016 NTT corp. All Rights Reserved.
何はともあれ、まずはサンプルを動かしてみる
https://github.com/spring-projects/spring-social-samples
さあ、はじめよう!
6Copyright©2016 NTT corp. All Rights Reserved.
何はともあれ、まずはサンプルを動かしてみる
https://github.com/spring-projects/spring-social-samples
さあ、はじめよう!
!?
7Copyright©2016 NTT corp. All Rights Reserved.
何はともあれ、まずはサンプルを動かしてみる
https://github.com/spring-projects/spring-social-samples
さあ、はじめよう!
_人人人人人人人人_
> BUILD FAILED <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
8Copyright©2016 NTT corp. All Rights Reserved.
• 解説付きの別のサンプルがある
https://spring.io/guides/gs/accessing-facebook
https://spring.io/guides/gs/accessing-twitter
• 次スライドからFacebookのサンプルの中身を見ていく
• まずは動かしてみる
• こっちは正しく動くのでご安心を
Spring Social + Bootのサンプル
9Copyright©2016 NTT corp. All Rights Reserved.
プロジェクト構成の確認
Javaファイルは2つだけ
10Copyright©2016 NTT corp. All Rights Reserved.
pom.xml
Spring Social Facebookを使用
テンプレートにThymeleafを使用
11Copyright©2016 NTT corp. All Rights Reserved.
application.property
OAuth Server(ここではFacebook)が
OAuth Clientを識別・認証するために発行する情報
ダミー値なので差し替える必要がある
アプリケーション登録の方法は割愛
!
12Copyright©2016 NTT corp. All Rights Reserved.
Application.java
お馴染みの定義
13Copyright©2016 NTT corp. All Rights Reserved.
HomeController.java (1/2)
Facebook? ConnectionRepository?
“/”へのリクエストマッピング
14Copyright©2016 NTT corp. All Rights Reserved.
HomeController.java (2/2)
このあたりでAPIを叩いているのは見れば分かる
他のAPIの使用方法も大体想像できる
リクエストマッピングは?
15Copyright©2016 NTT corp. All Rights Reserved.
facebookConnect.html
“/connect/facebook”へPOST
リクエストマッピングは?
16Copyright©2016 NTT corp. All Rights Reserved.
• 使うのはとても簡単そう
• Dependencyの追加
• AppID / AppSecretを設定
• ControllerとViewを実装
でもちょっとマジカル(に見える)
・Facebook, ConnectionRepositoryオブジェクト
・”/connect/facebook”へのリクエストマッピング
→ 以降、裏で何が起こっているのかを見ていく
サンプルを通して
17Copyright©2016 NTT corp. All Rights Reserved.
Spring Socialの接続処理の大まかな流れ
ConnectionController
ConnectionFactory<A>
Connection<A>
ConnectionRepository
OAuth Server
接続用のリクエストマッピングを定義
接続処理を移譲
OAuth Danth
永続化
18Copyright©2016 NTT corp. All Rights Reserved.
接続処理の大まかな流れ
ConnectionController
ConnectionFactory<A>
Connection<A>
ConnectionRepository
OAuth Server
接続用のリクエストマッピングを定義
接続用処理を移譲
OAuth Danth
永続化
Auto Configurationで
暗黙的に生成
19Copyright©2016 NTT corp. All Rights Reserved.
Spring MVCのController
接続の作成・更新・切断のためのリクエストマッピングを定義
接続処理を適切なConnectionFactoryに移譲
ConnectionController
GET /connect
GET /connect/{providerId}
POST /connect/{providerId}
GET /connect/{providerId}?code={code}
DELETE /connect/{providerId}
DELETE /connect/{providerId}/{providerUserId}
GET /connect/{providerId}?oauth_token={request_token}
&oauth_verifier={verifier}
OAuth2用
OAuth1用
20Copyright©2016 NTT corp. All Rights Reserved.
• OAuth Serverとの接続処理を担うクラス
• Service Providerごとに継承したクラスが存在
• AppID/AppSecretはConnectionFactoryに設定
ConnectionFactory
ConnectionFactory<A>
OAuth2ConnectionFactory<A> OAuth1ConnectionFactory<A>
FacebookConnectionFactory TwitterConnectionFactory
21Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
/connect/{providerId}へPOST
22Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
appIDを取得
23Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
appIDとリダイレクトURLを渡す
アクセスしたいリソースもパラメータで指定する
リダイレクトURLはデフォルトで/connect/{providerId}
24Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
アクセス許可を与える
25Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
認可コードを付けてリダイレクト
26Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
appSecretを渡してアクセストークンを取得
アクセスにはRestTemplateを使用
27Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
Connectionを作成
28Copyright©2016 NTT corp. All Rights Reserved.
• ConnectionControllerとConnectionFactoryがア
クセストークン取得時のやり取りを隠蔽
OAuth Danceの隠蔽
Connection
Controller
Connection
Factory
OAuth Server
/connect/{providerId} へリダイレクトしてViewを表示
29Copyright©2016 NTT corp. All Rights Reserved.
• 実際にはConnectionControllerには
ConnectionFactoryではなく
ConnectionFactoryLocatorを設定する
• ConnectionFactoryLocatorを利用することで適切な
ConnectionFactoryに接続処理を移譲できる
補足
ConnectionFactoryLocator
FacebookConnectionFactory
TwitterConnectionFactory
.
.
.
複数のOAuth Serverに
対応するためには
複数のConnectionFactoryが
必要
30Copyright©2016 NTT corp. All Rights Reserved.
• 文字通りOAuth Serverとの「接続」を表すクラス
• 以下の基本的な情報やアクセストークンを保持
• OAuth Server名
• ユーザID
• ユーザ表示名
• プロフィールURL
• アイコン画像URL
• Connection#getApi で取得したオブジェクトを利用
してAPIを叩く
• Connection<Facebook>なら,Facebookオブジェクトが取
得できる
Connection
31Copyright©2016 NTT corp. All Rights Reserved.
API利用の例
Connection<Facebook> fbConnection = ...; //Connectionを取得
Facebook fb = fbConnection.getApi(); // APIを取得
List<String> friendIds =
fb.friendOperations().getFriendIds(); // APIを叩く
どんなAPIが利用できるかは当然Server次第
詳細はリファレンスを参照
32Copyright©2016 NTT corp. All Rights Reserved.
• 作成したConnectionを永続化
• Connectionに対するCRUD処理を持つ
• 接続時にConnectionControllerが保存してくれる
• ユーザに対して複数のConnectionを保持できる
• FacebookとTwitterそれぞれと連係する場合など
• JDBC版とインメモリ版の2種類が提供されている
• JdbcUsersConnectionRepository
• InMemoryUsersConnectionRepository
ConnectionRepository
スキーマ定義(SQL)も提供されている
Auto Configurationで作られるのはこっち
DBに保存したければ差し替えが必要
33Copyright©2016 NTT corp. All Rights Reserved.
ConnectionRepositoryからConnectionを取得
ConnectionRepository repository = ...;
Connection<Facebook> fbConnection =
repository.findPrimaryConnection(Facebook.class);
Facebook fb =
fbConnection != null ? fbConnection.getApi() : null
・ConnectionRepository自体はシングルユーザ前提
・マルチユーザの場合にはユーザとConnectionRepositoryの
対応付けが必要
・そのためにUsersConnectionRepositoryを使用
・詳細は割愛
!
34Copyright©2016 NTT corp. All Rights Reserved.
Spring SocialでOAuth Serverに接続するために必
要なもの
• AppID / AppSecret
• OAuth Clientの識別・認証情報
• ConnectionController
• リクエストマッピングの定義
• ConnectionFactory
• 接続処理の定義
• ConnectionRepository
• Connectionの永続化
ここまでのまとめ
Spring Bootでは
Auto Configurationで作成
URLを叩くだけで接続できる
35Copyright©2016 NTT corp. All Rights Reserved.
• OAuth Serverのアカウントを使ってサインイン
• 自サービスへのログインやアカウント作成のために
FacebookやTwitterのアカウント情報を使用する
• 二つの方法から選択する
• ProviderSignInControllerを使う方法
• ConnectionControllerと似たような使い方
• SpringSecurityを使わない場合に使用する
• SocialAuthenticationFilterを使う方法
• SpringSecurityの認証の仕組みに乗っかって使用する
Spring Socialのその他の機能
36Copyright©2016 NTT corp. All Rights Reserved.
• 今まで提供されていないOAuth Server用のモジュール
を作成することもできる
• OAuthの接続処理等はSpring Socialの仕組みを利用で
きる
• APIをバインディングしたクラスや
ConnectionFactory等,OAuth Serverに依存した部
分の実装が必要
新しいOAuth Serverのサポート
37Copyright©2016 NTT corp. All Rights Reserved.
例:Gitter APIへのバインディング
…
Roomクラスは要作成 各APIを叩く処理は要作成
RestTemplateを使用
38Copyright©2016 NTT corp. All Rights Reserved.
• Spring Socialを使うと
• OAuthを意識せずに各種SaaSのAPIを利用できる
• 自サービスのログイン/アカウント作成にSaaSのアカウント情
報を利用できる
• 新しいサービスのAPIへのサポートも可能
• BootのAuto Configurationによって
• ConnectionControllerやConnectionFactory等が自動的に作
成される
• 必要なのはappId/appSecretをプロパティ定義することだけ
まとめ
39Copyright©2016 NTT corp. All Rights Reserved.
• リファレンス
• http://docs.spring.io/spring-
social/docs/current/reference/htmlsingle/
参考資料

Mais conteúdo relacionado

Mais procurados

SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix
SpringOne 2015 報告会 - Lattice + Spring Cloud NetflixSpringOne 2015 報告会 - Lattice + Spring Cloud Netflix
SpringOne 2015 報告会 - Lattice + Spring Cloud NetflixTommy Ludwig
 
Spring Boot + Netflix Eureka
Spring Boot + Netflix EurekaSpring Boot + Netflix Eureka
Spring Boot + Netflix Eureka心 谷本
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeSatoru Yoshida
 
OpenStack東京サミットに向けて
OpenStack東京サミットに向けてOpenStack東京サミットに向けて
OpenStack東京サミットに向けてshintaro mizuno
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1Keisuke Imai
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門Hiroyuki Wada
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例Fukaya Akifumi
 
OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級Takashi Natsume
 
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へMasatoshi Fujino
 
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進EMC Japan
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
SORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたSORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたTakanori Suzuki
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with AnsibleHideki Saito
 
Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...Kentaro Ishizuka
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Yahoo!デベロッパーネットワーク
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
TungstenFabricでOpenStackとk8sをラクラク管理
TungstenFabricでOpenStackとk8sをラクラク管理TungstenFabricでOpenStackとk8sをラクラク管理
TungstenFabricでOpenStackとk8sをラクラク管理Yuki Yamashita
 

Mais procurados (20)

SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix
SpringOne 2015 報告会 - Lattice + Spring Cloud NetflixSpringOne 2015 報告会 - Lattice + Spring Cloud Netflix
SpringOne 2015 報告会 - Lattice + Spring Cloud Netflix
 
Spring Boot + Netflix Eureka
Spring Boot + Netflix EurekaSpring Boot + Netflix Eureka
Spring Boot + Netflix Eureka
 
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a CodeAnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
 
OpenStack東京サミットに向けて
OpenStack東京サミットに向けてOpenStack東京サミットに向けて
OpenStack東京サミットに向けて
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
Ladder of cqrs+es
Ladder of cqrs+esLadder of cqrs+es
Ladder of cqrs+es
 
Riot.jsを用いたweb開発 takusuta tech conf #1
Riot.jsを用いたweb開発   takusuta tech conf #1Riot.jsを用いたweb開発   takusuta tech conf #1
Riot.jsを用いたweb開発 takusuta tech conf #1
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例マンガボックスのiOS10プッシュ通知導入事例
マンガボックスのiOS10プッシュ通知導入事例
 
OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級OpenStackアップストリーム活動実践 中級
OpenStackアップストリーム活動実践 中級
 
Spring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へSpring BootでHello Worldのその先へ
Spring BootでHello Worldのその先へ
 
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
Pivotal Cloud FoundryによるDevOpsとアジャイル開発の推進
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
SORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみたSORACOM S+Cameraを利用して在庫チェックをやってみた
SORACOM S+Cameraを利用して在庫チェックをやってみた
 
OpenStackSDK with Ansible
OpenStackSDK with AnsibleOpenStackSDK with Ansible
OpenStackSDK with Ansible
 
Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...Deploying secure service mesh for applications on k8s with using A10's Lighti...
Deploying secure service mesh for applications on k8s with using A10's Lighti...
 
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
TungstenFabricでOpenStackとk8sをラクラク管理
TungstenFabricでOpenStackとk8sをラクラク管理TungstenFabricでOpenStackとk8sをラクラク管理
TungstenFabricでOpenStackとk8sをラクラク管理
 

Destaque

SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 
Password validation with Passay
Password validation with PassayPassword validation with Passay
Password validation with PassayTakuya Iwatsuka
 
Securing Grails Applications
Securing Grails ApplicationsSecuring Grails Applications
Securing Grails ApplicationsBurt Beckwith
 
JJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsJJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsUehara Junji
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Kiyotaka Oku
 
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글라한사 아
 
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hackYusuke Yamamoto
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Tokuhiro Matsuno
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Takuya Iwatsuka
 

Destaque (10)

SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
Password validation with Passay
Password validation with PassayPassword validation with Passay
Password validation with Passay
 
Securing Grails Applications
Securing Grails ApplicationsSecuring Grails Applications
Securing Grails Applications
 
JJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/GrailsJJUG CCC 2012 Real World Groovy/Grails
JJUG CCC 2012 Real World Groovy/Grails
 
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
 
스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글스프링시큐리티와 소셜연습 이해를 위한 글
스프링시큐리티와 소셜연습 이해를 위한 글
 
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
第3回Twitter API勉強会 - ストリーミングAPI #twtr_hack
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門Spring 5に備えるリアクティブプログラミング入門
Spring 5に備えるリアクティブプログラミング入門
 

Semelhante a Spring social の基礎

Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractSpring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractTakuya Iwatsuka
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験アシアル株式会社
 
Microservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMicroservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMakoto Kakuta
 
Spring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud Pipelines
Spring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud PipelinesSpring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud Pipelines
Spring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud PipelinesJunya Katada
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話和也 大木
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbindKaoru Maeda
 
kintone連携スマホアプリの開発・配布体験_生形 可奈子氏
kintone連携スマホアプリの開発・配布体験_生形 可奈子氏kintone連携スマホアプリの開発・配布体験_生形 可奈子氏
kintone連携スマホアプリの開発・配布体験_生形 可奈子氏kintone papers
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsTakuya Iwatsuka
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向NTT Software Innovation Center
 
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用Daiyu Hatakeyama
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSSkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSKensaku Komatsu
 
20160527_06_Azure Certified for IoT for 共創ラボ
20160527_06_Azure Certified for IoT for 共創ラボ20160527_06_Azure Certified for IoT for 共創ラボ
20160527_06_Azure Certified for IoT for 共創ラボIoTビジネス共創ラボ
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤Godai Nakamura
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-JOYZO
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-Ryu Yamashita
 
○○ as Code(LL Diver)
○○ as Code(LL Diver)○○ as Code(LL Diver)
○○ as Code(LL Diver)Yoshiyuki Takano
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~Hideki Takase
 

Semelhante a Spring social の基礎 (20)

Spring I/O 2018 報告会
Spring I/O 2018 報告会Spring I/O 2018 報告会
Spring I/O 2018 報告会
 
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud ContractSpring I/O 2018 報告 RESTDocs RAML, Cloud Contract
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験
 
Microservices /w Spring Security OAuth
Microservices /w Spring Security OAuthMicroservices /w Spring Security OAuth
Microservices /w Spring Security OAuth
 
Spring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud Pipelines
Spring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud PipelinesSpring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud Pipelines
Spring I/O 2018 報告会 - Spring Cloud Gateway / Spring Cloud Pipelines
 
Spring I/O 2018 報告会
Spring I/O 2018 報告会Spring I/O 2018 報告会
Spring I/O 2018 報告会
 
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
自前でcloud foundryを構築してgooのビッグサービスをカットオーバーした話
 
IETF96 Update oauth tokbind
IETF96 Update oauth tokbindIETF96 Update oauth tokbind
IETF96 Update oauth tokbind
 
kintone連携スマホアプリの開発・配布体験_生形 可奈子氏
kintone連携スマホアプリの開発・配布体験_生形 可奈子氏kintone連携スマホアプリの開発・配布体験_生形 可奈子氏
kintone連携スマホアプリの開発・配布体験_生形 可奈子氏
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
SkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaSSkyWay国内唯一のCPaaS
SkyWay国内唯一のCPaaS
 
20160527_06_Azure Certified for IoT for 共創ラボ
20160527_06_Azure Certified for IoT for 共創ラボ20160527_06_Azure Certified for IoT for 共創ラボ
20160527_06_Azure Certified for IoT for 共創ラボ
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
 
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
kintoneで実践するIoTハンズオン -90分で挑戦!kintone & AWS IoT連携-
 
○○ as Code(LL Diver)
○○ as Code(LL Diver)○○ as Code(LL Diver)
○○ as Code(LL Diver)
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 

Spring social の基礎

  • 1. Copyright©2016 NTT corp. All Rights Reserved. Spring Socialの基礎 2016年3月9日 NTT ソフトウェアイノベーションセンタ 岩塚 卓弥
  • 2. 2Copyright©2016 NTT corp. All Rights Reserved. • 名前:岩塚 卓弥 • 所属:NTT ソフトウェアイノベーションセンタ • 専門:ソフトウェア工学 / プログラミング言語理論 グループ向けフレームワーク整備の担当でSpringを利用 自己紹介
  • 3. 3Copyright©2016 NTT corp. All Rights Reserved. Spring Social Main Project Spring Social Core Spring Social Facebook Spring Social Twitter Spring Social LinkedIn Incubator Project Spring Social GitHub Spring Social TripIt コア以外は各API用のサブプロジェクト
  • 4. 4Copyright©2016 NTT corp. All Rights Reserved. 多数のCommunity Project
  • 5. 5Copyright©2016 NTT corp. All Rights Reserved. 何はともあれ、まずはサンプルを動かしてみる https://github.com/spring-projects/spring-social-samples さあ、はじめよう!
  • 6. 6Copyright©2016 NTT corp. All Rights Reserved. 何はともあれ、まずはサンプルを動かしてみる https://github.com/spring-projects/spring-social-samples さあ、はじめよう! !?
  • 7. 7Copyright©2016 NTT corp. All Rights Reserved. 何はともあれ、まずはサンプルを動かしてみる https://github.com/spring-projects/spring-social-samples さあ、はじめよう! _人人人人人人人人_ > BUILD FAILED <  ̄Y^Y^Y^Y^Y^Y^Y ̄
  • 8. 8Copyright©2016 NTT corp. All Rights Reserved. • 解説付きの別のサンプルがある https://spring.io/guides/gs/accessing-facebook https://spring.io/guides/gs/accessing-twitter • 次スライドからFacebookのサンプルの中身を見ていく • まずは動かしてみる • こっちは正しく動くのでご安心を Spring Social + Bootのサンプル
  • 9. 9Copyright©2016 NTT corp. All Rights Reserved. プロジェクト構成の確認 Javaファイルは2つだけ
  • 10. 10Copyright©2016 NTT corp. All Rights Reserved. pom.xml Spring Social Facebookを使用 テンプレートにThymeleafを使用
  • 11. 11Copyright©2016 NTT corp. All Rights Reserved. application.property OAuth Server(ここではFacebook)が OAuth Clientを識別・認証するために発行する情報 ダミー値なので差し替える必要がある アプリケーション登録の方法は割愛 !
  • 12. 12Copyright©2016 NTT corp. All Rights Reserved. Application.java お馴染みの定義
  • 13. 13Copyright©2016 NTT corp. All Rights Reserved. HomeController.java (1/2) Facebook? ConnectionRepository? “/”へのリクエストマッピング
  • 14. 14Copyright©2016 NTT corp. All Rights Reserved. HomeController.java (2/2) このあたりでAPIを叩いているのは見れば分かる 他のAPIの使用方法も大体想像できる リクエストマッピングは?
  • 15. 15Copyright©2016 NTT corp. All Rights Reserved. facebookConnect.html “/connect/facebook”へPOST リクエストマッピングは?
  • 16. 16Copyright©2016 NTT corp. All Rights Reserved. • 使うのはとても簡単そう • Dependencyの追加 • AppID / AppSecretを設定 • ControllerとViewを実装 でもちょっとマジカル(に見える) ・Facebook, ConnectionRepositoryオブジェクト ・”/connect/facebook”へのリクエストマッピング → 以降、裏で何が起こっているのかを見ていく サンプルを通して
  • 17. 17Copyright©2016 NTT corp. All Rights Reserved. Spring Socialの接続処理の大まかな流れ ConnectionController ConnectionFactory<A> Connection<A> ConnectionRepository OAuth Server 接続用のリクエストマッピングを定義 接続処理を移譲 OAuth Danth 永続化
  • 18. 18Copyright©2016 NTT corp. All Rights Reserved. 接続処理の大まかな流れ ConnectionController ConnectionFactory<A> Connection<A> ConnectionRepository OAuth Server 接続用のリクエストマッピングを定義 接続用処理を移譲 OAuth Danth 永続化 Auto Configurationで 暗黙的に生成
  • 19. 19Copyright©2016 NTT corp. All Rights Reserved. Spring MVCのController 接続の作成・更新・切断のためのリクエストマッピングを定義 接続処理を適切なConnectionFactoryに移譲 ConnectionController GET /connect GET /connect/{providerId} POST /connect/{providerId} GET /connect/{providerId}?code={code} DELETE /connect/{providerId} DELETE /connect/{providerId}/{providerUserId} GET /connect/{providerId}?oauth_token={request_token} &oauth_verifier={verifier} OAuth2用 OAuth1用
  • 20. 20Copyright©2016 NTT corp. All Rights Reserved. • OAuth Serverとの接続処理を担うクラス • Service Providerごとに継承したクラスが存在 • AppID/AppSecretはConnectionFactoryに設定 ConnectionFactory ConnectionFactory<A> OAuth2ConnectionFactory<A> OAuth1ConnectionFactory<A> FacebookConnectionFactory TwitterConnectionFactory
  • 21. 21Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server /connect/{providerId}へPOST
  • 22. 22Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server appIDを取得
  • 23. 23Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server appIDとリダイレクトURLを渡す アクセスしたいリソースもパラメータで指定する リダイレクトURLはデフォルトで/connect/{providerId}
  • 24. 24Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server アクセス許可を与える
  • 25. 25Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server 認可コードを付けてリダイレクト
  • 26. 26Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server appSecretを渡してアクセストークンを取得 アクセスにはRestTemplateを使用
  • 27. 27Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server Connectionを作成
  • 28. 28Copyright©2016 NTT corp. All Rights Reserved. • ConnectionControllerとConnectionFactoryがア クセストークン取得時のやり取りを隠蔽 OAuth Danceの隠蔽 Connection Controller Connection Factory OAuth Server /connect/{providerId} へリダイレクトしてViewを表示
  • 29. 29Copyright©2016 NTT corp. All Rights Reserved. • 実際にはConnectionControllerには ConnectionFactoryではなく ConnectionFactoryLocatorを設定する • ConnectionFactoryLocatorを利用することで適切な ConnectionFactoryに接続処理を移譲できる 補足 ConnectionFactoryLocator FacebookConnectionFactory TwitterConnectionFactory . . . 複数のOAuth Serverに 対応するためには 複数のConnectionFactoryが 必要
  • 30. 30Copyright©2016 NTT corp. All Rights Reserved. • 文字通りOAuth Serverとの「接続」を表すクラス • 以下の基本的な情報やアクセストークンを保持 • OAuth Server名 • ユーザID • ユーザ表示名 • プロフィールURL • アイコン画像URL • Connection#getApi で取得したオブジェクトを利用 してAPIを叩く • Connection<Facebook>なら,Facebookオブジェクトが取 得できる Connection
  • 31. 31Copyright©2016 NTT corp. All Rights Reserved. API利用の例 Connection<Facebook> fbConnection = ...; //Connectionを取得 Facebook fb = fbConnection.getApi(); // APIを取得 List<String> friendIds = fb.friendOperations().getFriendIds(); // APIを叩く どんなAPIが利用できるかは当然Server次第 詳細はリファレンスを参照
  • 32. 32Copyright©2016 NTT corp. All Rights Reserved. • 作成したConnectionを永続化 • Connectionに対するCRUD処理を持つ • 接続時にConnectionControllerが保存してくれる • ユーザに対して複数のConnectionを保持できる • FacebookとTwitterそれぞれと連係する場合など • JDBC版とインメモリ版の2種類が提供されている • JdbcUsersConnectionRepository • InMemoryUsersConnectionRepository ConnectionRepository スキーマ定義(SQL)も提供されている Auto Configurationで作られるのはこっち DBに保存したければ差し替えが必要
  • 33. 33Copyright©2016 NTT corp. All Rights Reserved. ConnectionRepositoryからConnectionを取得 ConnectionRepository repository = ...; Connection<Facebook> fbConnection = repository.findPrimaryConnection(Facebook.class); Facebook fb = fbConnection != null ? fbConnection.getApi() : null ・ConnectionRepository自体はシングルユーザ前提 ・マルチユーザの場合にはユーザとConnectionRepositoryの 対応付けが必要 ・そのためにUsersConnectionRepositoryを使用 ・詳細は割愛 !
  • 34. 34Copyright©2016 NTT corp. All Rights Reserved. Spring SocialでOAuth Serverに接続するために必 要なもの • AppID / AppSecret • OAuth Clientの識別・認証情報 • ConnectionController • リクエストマッピングの定義 • ConnectionFactory • 接続処理の定義 • ConnectionRepository • Connectionの永続化 ここまでのまとめ Spring Bootでは Auto Configurationで作成 URLを叩くだけで接続できる
  • 35. 35Copyright©2016 NTT corp. All Rights Reserved. • OAuth Serverのアカウントを使ってサインイン • 自サービスへのログインやアカウント作成のために FacebookやTwitterのアカウント情報を使用する • 二つの方法から選択する • ProviderSignInControllerを使う方法 • ConnectionControllerと似たような使い方 • SpringSecurityを使わない場合に使用する • SocialAuthenticationFilterを使う方法 • SpringSecurityの認証の仕組みに乗っかって使用する Spring Socialのその他の機能
  • 36. 36Copyright©2016 NTT corp. All Rights Reserved. • 今まで提供されていないOAuth Server用のモジュール を作成することもできる • OAuthの接続処理等はSpring Socialの仕組みを利用で きる • APIをバインディングしたクラスや ConnectionFactory等,OAuth Serverに依存した部 分の実装が必要 新しいOAuth Serverのサポート
  • 37. 37Copyright©2016 NTT corp. All Rights Reserved. 例:Gitter APIへのバインディング … Roomクラスは要作成 各APIを叩く処理は要作成 RestTemplateを使用
  • 38. 38Copyright©2016 NTT corp. All Rights Reserved. • Spring Socialを使うと • OAuthを意識せずに各種SaaSのAPIを利用できる • 自サービスのログイン/アカウント作成にSaaSのアカウント情 報を利用できる • 新しいサービスのAPIへのサポートも可能 • BootのAuto Configurationによって • ConnectionControllerやConnectionFactory等が自動的に作 成される • 必要なのはappId/appSecretをプロパティ定義することだけ まとめ
  • 39. 39Copyright©2016 NTT corp. All Rights Reserved. • リファレンス • http://docs.spring.io/spring- social/docs/current/reference/htmlsingle/ 参考資料