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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
M_Ishikawa
December 12, 2020
Technology
150
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
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
610
フロントエンド制作向けビルド ツールGruntがバックエンド 開発でも意外と使える! @M_Ishikawa #yapcasia
ishikawam
1
11k
フロントエンド制作向け ビルドツールGruntを PHPバックエンド開発で利用する @M_Ishikawa #phpcon2013
ishikawam
0
250
Other Decks in Technology
See All in Technology
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
0
410
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
5
560
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
560
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
1
260
自律型 AI をセキュアに実装!Gemini と MIG で作る動的コード実行環境
recruitengineers
PRO
1
230
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
460
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
17
120k
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
120
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
550
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
310
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
130
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
140
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
GraphQLとの向き合い方2022年版
quramy
50
15k
Design in an AI World
tapps
1
350
Designing for humans not robots
tammielis
254
26k
Git: the NoSQL Database
bkeepers
PRO
433
67k
The Language of Interfaces
destraynor
162
27k
Amusing Abliteration
ianozsvald
1
330
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
940
Designing Experiences People Love
moore
143
24k
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
ご清聴ありがとうございました