Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Socialiteのベストプラクティス
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
M_Ishikawa
December 12, 2020
Technology
130
0
Share
Socialiteのベストプラクティス
php
laravel
socialite
social login
M_Ishikawa
December 12, 2020
More Decks by M_Ishikawa
See All by M_Ishikawa
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
ishikawam
0
140
WebPayのCheckoutHelper が超便利!!! って話
ishikawam
0
130
IPtalkの使い方
ishikawam
0
550
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
ishikawam
1
11k
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
ishikawam
0
240
Other Decks in Technology
See All in Technology
プラットフォームエンジニアリングの実践 - AWS コンテナサービスで構築する社内プラットフォーム / AWS Containers Platform Meetup #1
literalice
1
210
マルチプロダクトの信頼性を効率良く保っていくために
kworkdev
PRO
0
180
音声言語モデル手法に関する発表の紹介
kzinmr
0
140
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
200
AIが盛んな時代に 技術記事を書き始めて起きた私の中での小さな変化
peintangos
0
230
Revisiting [CLS] and Patch Token Interaction in Vision Transformers
yu4u
0
400
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
170
AgentCore Managed Harness を使ってみよう
yakumo
2
240
Good Enough Types: Heuristic Type Inference for Ruby
riseshia
1
320
EMから幅を広げるために最近挑戦していること / Recent challenges I'm undertaking to expand my horizons beyond EM
hiro_torii
1
140
Chasing Real-Time Observability for CRuby
whitegreen
0
270
Shipping AI Agents — Lessons from Production
vvatanabe
0
290
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Designing Powerful Visuals for Engaging Learning
tmiket
1
350
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
180
Navigating Weather and Climate Data
rabernat
0
170
Everyday Curiosity
cassininazir
0
200
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
220
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Thoughts on Productivity
jonyablonski
76
5.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
The Limits of Empathy - UXLibs8
cassininazir
1
310
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
Socialiteの ベストプラクティス @M_Ishikawa id:ishikawam QIQDPO࠙ձ-5
⾃⼰紹介
Socialite is 何
Socialiteとは •https://github.com/laravel/socialite •Laravelの認証ライブラリ •ソーシャルログインを実現
ソーシャルログイン
ログインするサイトって? •いわゆる会員サイト •いまどきは会員にならないとなにもできないよね? - ログインせず書き込めるのは2chまで •じゃあ会員になるってどうやって? - メールでしか会員登録できないとかいまどきないよね? - パスワード求められても、、オタク、まさか⽣で保存してないよね???そ
んな仲良くないのにw信じられないよ(事故事例多数) - 誰もがオタクのサービスより信頼できる認証プロバイダを使いたいに決まっ てるじゃん - いや、サービス⾃体はホント素敵なんだけどね、信頼まではできないよw
というわけで、とっても便利!安⼼! ソーシャルログイン!
Socialiteの ベストプラクティス (=横⾏しているダメな例をぶった斬る)
x emailをIDとして使う
たまたまemailが⼀致したら救済、はOK (ただしemailはverified済)
たまたまemailが⼀致したら救済、はOK (ただしemailはverified済)
x タイプヒントがない
タイプヒントつけてみた
x \Exceptionで握りつぶしている
o \Exception以外で握りつぶしている
x Social Loginの情報を、users テーブル拡張して保存している ݩ ͏ʔΜ ͏ʔΜ
o Social Loginの情報は 別テーブルに保存
x unsignedBigIntegerになっ てないので外部キー制約でエラー •alter table `social_accounts` add constraint `social_accounts_user_id_foreign` foreign
key (`user_id`) references `users` (`id`) on delete cascade; •で •SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
unsignedBigIntegerになって ないので外部キー制約でエラー
unsignedBigIntegerになって ないので外部キー制約でエラー
x provider_user_idだけで検索
o provider & provider_user_idで検索
メールをみるとき、socialアカ ウントの重複を配慮していない
tokenって保存しなくていい の? •どっち? •backgroundで動かさないならいらない •ログインユーザーのためだけとか •動かすならいる
email_verified_atのこと考え ていない •メールログインも使うなら必要ですよね
もっと知りたい •https://readouble.com/laravel/ 8.x/ja/socialite.html 読もうよ
OAuth OneとOAuth Twoの解 説がない •https://readouble.com/laravel/ 8.x/ja/socialite.html 読もうよ
findOrCreate() •それcakephp •firstOrCreate() •まるかぶりなのであえて firstOrCreateUser()
オレが考えた Socialite活⽤コード 最終形(いまのところ) ͭͬ͜Έͪ IUUQTHJTUHJUIVCDPNJTIJLBXBNCDDEB⒎CFCC
余談 •Socialiteで扱えるソーシャルログイン のprovider、いくつくらいあると思い ます?
165! IUUQTTPDJBMJUFQSPWJEFSTDPNBCPVU "QQMF"VUI%BJMZNPUJPO%FWJBOUBSU%SJCCCMF'BDFCPPL'MBUUS'MJDLS'PVSTRVBSF(JUFB(JU)VC(JU-BC (PPHMF*NHVS*OTUBHSBN*OTUBHSBN#BTJD,BLBP,FZDMPBL-BSBWFM1BTTQPSU-JOF.FEJVN.FFUVQ .JDSPTPGU/BWFS0"VUIHFO0EOPLMBTTOJLJ0LUB1JOUFSFTU1JYOFU1VTICVMMFU223FEEJU4OBQDIBU 4UBDL&YDIBOHF4UFFN463'DPOFYU5FMFHSBN5VNCMS5XJUUFS7JNFP7,8F$IBU4FSWJDF"DDPVOU 8F$IBU8FC8FJCP8FJYJO8FJYJO8FC8PSE1SFTT:BIPP:BNNFS:BOEFY:PV5VCF;BMP(BNJOH #BUUMFOFU%JTDPSE1SPKFDU74NBTIDBTU4UFBN4USFBN&MFNFOUT4USFBNMBCT5XJUDI"DDMBJN$PVSTFSB %BUBQPSUFO"QQ/FU(PPESFBET)FBE)VOUFS.PJ,SVH4DJ4UBSUFS4UPDL5XJUT9JOH"TBOB"XFCFS #JUMZ#JUCVDLFU#PY#V⒎FS$BNQBJHO.POJUPS$IFEEBS$POTUBOU$POUBDU%JHJUBM0DFBO%JTRVT
%SPQCPY&OWBUP&UTZ&WFOUCSJUF&ZF&N(FUUZ*NBHFT(JUFF)BSWFTU)FSPLV)VC4QPU)VNBO"1* *OUFSDPN+JSB-JOLFE*O.BJM$IJNQ.BJMSV.BLFS-PH.BUUFSNPTU.FSDBEP-JCSF/FUMJGZ04$IJOB07) 1JQFESJWF1PEJP1SPDPSF1SPEVDU)VOU2VJDL#PPLT3FBEBCJMJUZ4BHF4BMFT'PSDF4IBSF1PJOU4IPQJGZ 4VQFS0⒏DF5FBNMFBEFS5FBNXFFL5PEPJTU5SFMMP6OTQMBTI7FSDFM7FSTJPO0OF8).$4;FOEFTL ;PIP$MBWF6OJDB'SBODF$POOFDU*'416$-1BZNFOUT#JOBODF$PJOCBTF(VNSPBE.FEJB$VCF.PMMJF 1BUSFPO1BZNJMM1BZ1BM1BZ1BM4BOECPY3FECPPUI4USJQF7FONP9FSP.VTJD%FF[FS%JTDPHT .JYDMPVE4PVOE$MPVE4QPUJGZ.JTD"ENJUBE"OHFM-JTU"SD(*4%PVCBO'JUCJU'MFYLJET (BSNJO$POOFDU1FFSJOH%#3VO,FFQFS4USBWB5SBLU574IPX5JNF6CFS6OUBQQE8JUIJOHT
ご清聴ありがとうございました