Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Socialiteのベストプラクティス
Search
M_Ishikawa
December 12, 2020
Technology
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Socialiteのベストプラクティス
php
laravel
socialite
social login
M_Ishikawa
December 12, 2020
Transcript
32 slides
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
ご清聴ありがとうございました
More Decks by M_Ishikawa
See All by M_Ishikawa
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
ishikawam
0
140
WebPayのCheckoutHelper が超便利!!! って話
ishikawam
0
140
IPtalkの使い方
ishikawam
0
620
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
ishikawam
1
11k
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
ishikawam
0
250
Other Decks in Technology
See All in Technology
JAWSコミュニティに 参加して1年経った結果
ssakita
0
120
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
16k
Gifu WordPress Meetup #200 に向けて、私たちには何ができるだろうか?/ 2026-11-07 Gifu WordPress Meetup
torounit
0
250
これからのデータエンジニアの役割について考える / Rethinking the Role of Data Engineers in the AI Era
okiyuki99
0
350
生成AI時代のIAMのマニアックな話
takuros
6
3k
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
120
公共分野での生成AI活用
toru_kubota
1
320
属人化したISMS運用をGitHubとAIで仕組み化した1年間の記録
sioncojp
4
2.1k
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
330
bpf_arenaとstruct_opsを使うのが難しかった話
masu_mi
0
230
慶應義塾大学 AI実践05 論文執筆の仕組み化
keio_smilab
PRO
7
3.8k
公共システムAdventCalendar2026
toru_kubota
0
300
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
580
Rebuilding a faster, lazier Slack
samanthasiow
85
9.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
980
Site-Speed That Sticks
csswizardry
13
1.6k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
350
30 Presentation Tips
portentint
PRO
1
470
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.7k
Claude Code のすすめ
schroneko
67
230k
Everyday Curiosity
cassininazir
0
400