Log masuk sosial sosialit
Log Masuk Sosial Laravel
- Naik taraf log masuk sosial
- Pemasangan
- Konfigurasi
- Penghalaan
- Parameter pilihan
- Akses Tiada status pengesahan
- Dapatkan butiran pengguna
- Pengenalan
Selain pengesahan berasaskan bentuk tipikal Di Luar Laravel Juga menyediakan cara yang mudah dan mudah untuk mengesahkan kepada pembekal OAuth menggunakan Laravel Socialite. Socialite kini menyokong pengesahan untuk Facebook, Twitter, LinkedIn, Google, GitHub, GitLab dan Bitbucket.
Pemandu untuk platform lain boleh didapati di laman web pemanduan komunitiSocialite Providers
.Meningkatkan Log Masuk Sosial
Apabila menaik taraf kepada versi utama baharu Socialite, pastikan anda menyemak dengan teliti Panduan Naik Taraf.
Pemasangan
ciri log masuk/log masuk sebelum anda Tambahkan pakej sosialit pada kebergantungan projek anda:
composer require laravel/socialiteKonfigurasi
Sebelum menggunakan Socialite, anda juga perlu menambah bukti kelayakan untuk perkhidmatan OAuth yang digunakan oleh aplikasi. Bukti kelayakan ini hendaklah diletakkan dalam fail konfigurasi
config/services.php
anda dan hendaklah digunakan dengan kekuncigithub
,gitlab
ataubitbucket
, bergantung pada pembekal yang diperlukan oleh aplikasi anda. Contohnya:config / services.php
配置文件中,并且应该使用密钥github
,gitlab
或bitbucket
, 取决于您的应用程序所需的提供商。 例如:'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => 'http://your-callback-url', ],如果
redirect
项的值是个相对路径,它会自动解析为全称 URL 。路由
接下来,就要对用户认证了!这需要两个路由:一个路由用于把用户重定向到 OAuth 提供器,另一个则用于在认证完成后接收相应提供器的回调请求。可以通过 facade 方式
Socialite::
来访问 Socialite:<?php namespace App\Http\Controllers\Auth;use Socialite; class LoginController extends Controller{ /** * Redirect the user to the GitHub authentication page. * * @return \Illuminate\Http\Response */ public function redirectToProvider() { return Socialite::driver('github')->redirect(); } /** * Obtain the user information from GitHub. * * @return \Illuminate\Http\Response */ public function handleProviderCallback() { $user = Socialite::driver('github')->user(); // $user->token; } }
redirect
方法负责将用户发送到 OAuth 提供程序,而user
方法将读取传入请求并从提供程序检索用户的信息。当然,还需要在你的控制器方法中定义好路由规则:
Route::get('login/github', 'Auth\LoginController@redirectToProvider'); Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');可选参数
许多 OAuth 提供程序支持重定向请求中的可选参数。 要在请求中包含任何可选参数,请使用关联数组调用
with
方法:return Socialite::driver('google') ->with(['hd' => 'example.com']) ->redirect();使用
with
方法时,注意不要传递任何保留的关键字,如state
或response_type
。访问作用域
在重定向用户之前,您还可以使用
scopes
方法在请求中添加其他「作用域」。 此方法将所有现有范围与您提供的范围合并:return Socialite::driver('github') ->scopes(['read:user', 'public_repo']) ->redirect();您可以使用
setScopes
方法覆盖所有现有范围:return Socialite::driver('github') ->setScopes(['read:user', 'public_repo']) ->redirect();无认证状态
stateless
return Socialite::driver('google')->stateless()->user();Jika nilai itemredirect
ialah laluan relatif, ia akan diselesaikan secara automatik ke URL penuh.routing🎜🎜Seterusnya, tiba masanya untuk mengesahkan pengguna! Ini memerlukan dua laluan: satu untuk mengubah hala pengguna ke penyedia OAuth dan satu untuk menerima permintaan panggil balik daripada pembekal selepas pengesahan selesai. Socialite boleh diakses melalui kaedah fasadSocialite::
: 🎜$user = Socialite::driver('github')->user(); // OAuth2 Providers $token = $user->token; $refreshToken = $user->refreshToken; // not always provided $expiresIn = $user->expiresIn; // OAuth1 Providers $token = $user->token; $tokenSecret = $user->tokenSecret; // 获取所有 Providers $user->getId(); $user->getNickname(); $user->getName(); $user->getEmail(); $user->getAvatar();🎜 Kaedahredirect
bertanggungjawab untuk menghantar pengguna kepada pembekal OAuth, manakalauser< /code> kaedah akan Membaca permintaan masuk dan mendapatkan semula maklumat pengguna daripada pembekal. 🎜🎜Sudah tentu, anda juga perlu menentukan peraturan penghalaan dalam kaedah pengawal anda: 🎜
$user = Socialite::driver('github')->userFromToken($token);🎜🎜🎜🎜🎜 Pilihan Parameter 🎜🎜Banyak penyedia OAuth menyokong parameter pilihan dalam permintaan ubah hala. Untuk memasukkan sebarang parameter pilihan dalam permintaan, panggil kaedahwith
dengan tatasusunan bersekutu: 🎜$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);🎜Apabila menggunakan kaedah🎜🎜🎜with
, berhati-hati untuk tidak menghantar sebarang kunci tersimpan Perkataan, sepertistate
atauresponse_type
. 🎜🎜🎜Akses skop🎜🎜Sebelum mengubah hala pengguna, anda juga boleh menggunakan < kaedah kod>skop menambah "skop" tambahan pada permintaan. Kaedah ini menggabungkan semua skop sedia ada dengan skop yang anda sediakan: 🎜rrreee🎜 Anda boleh menggunakan kaedahsetScopes
untuk mengatasi semua skop sedia ada: 🎜rrreee🎜🎜🎜 < div name="8d0b2d" data-unique="8d0b2d">🎜🎜Tiada keadaan pengesahan🎜🎜Kaedahstateless
boleh digunakan untuk melumpuhkan pengesahan keadaan sesi. Ini sangat berguna apabila menambahkan pengesahan sosial pada API anda: 🎜rrreee🎜🎜🎜🎜🎜🎜Dapatkan contoh pengguna
Sebaik sahaja anda mempunyai contoh pengguna, anda boleh mendapatkan lebih banyak butiran pengguna:
rrreeeDapatkan butiran pengguna daripada token (OAuth2)
Jika anda sudah mempunyai token akses yang sah untuk pengguna , anda boleh mendapatkan semula butiran pengguna menggunakan kaedah
rrreeeuserFromToken
.userFromToken
方法检索用户的详细信息。从令牌和秘钥中检索用户详细信息 (OAuth1)
如果你已经有了一个有效的用户令牌 / 秘钥,你可以使用
userFromTokenAndSecret
rrreeeArtikel ini mula-mula muncul di tapak web 🎜LearnKu.com🎜. 🎜🎜 rrreee