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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
M_Ishikawa
December 12, 2020
Technology
0
120
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
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
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
570
Why Organizations Fail: ノーベル経済学賞「国家はなぜ衰退するのか」から考えるアジャイル組織論
kawaguti
PRO
1
180
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
390
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
680
20260208_第66回 コンピュータビジョン勉強会
keiichiito1978
0
190
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
370
AIが実装する時代、人間は仕様と検証を設計する
gotalab555
1
140
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
140
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
200
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
600
20260204_Midosuji_Tech
takuyay0ne
1
160
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
110
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
130
Visualization
eitanlees
150
17k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
84
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Chasing Engaging Ingredients in Design
codingconduct
0
110
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Being A Developer After 40
akosma
91
590k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Exploring anti-patterns in Rails
aemeredith
2
250
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
ご清聴ありがとうございました