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
M_Ishikawa
December 12, 2020
Technology
0
98
Socialiteのベストプラクティス
php
laravel
socialite
social login
M_Ishikawa
December 12, 2020
Tweet
Share
More Decks by M_Ishikawa
See All by M_Ishikawa
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
ishikawam
0
130
WebPayのCheckoutHelper が超便利!!! って話
ishikawam
0
130
IPtalkの使い方
ishikawam
0
510
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
ishikawam
1
11k
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
ishikawam
0
240
Other Decks in Technology
See All in Technology
mrubyと micro-ROSが繋ぐロボットの世界
kishima
2
370
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
490
Witchcraft for Memory
pocke
1
640
Prox Industries株式会社 会社紹介資料
proxindustries
0
340
MySQL5.6から8.4へ 戦いの記録
kyoshidaxx
1
290
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
280
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
11
4k
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
150
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
210
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
140
Tech-Verse 2025 Global CTO Session
lycorptech_jp
PRO
0
1k
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
0
210
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
230
We Have a Design System, Now What?
morganepeng
53
7.7k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Adopting Sorbet at Scale
ufuk
77
9.4k
Typedesign – Prime Four
hannesfritz
42
2.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
720
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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
ご清聴ありがとうございました