首页 后端开发 php教程 通过社交名录轻松地在您的应用中添加社交登录

通过社交名录轻松地在您的应用中添加社交登录

Feb 10, 2025 pm 04:22 PM

laravel colecition:简化Laravel应用程序中的社会身份验证

本文,由Wern Ancheta和其他SitePoint审稿人进行的同行评审,探索Laravel Socialite,简化社交认证的软件包。

Easily Add Social Logins to Your App with Socialite

Socialite直接支持Google,Facebook,Twitter,LinkedIn,Github和Bitbucket。 尽管没有计划进一步的官方提供者,但社区驱动的社交名流提供商项目提供了许多非官方的扩展。

本教程假设了一个有效的Laravel应用程序。 建议改进宅基地,以实现强大的开发环境。

密钥概念:

    laravel社会名称摘要复杂的社会登录身份验证。
  • >它支持主要的Oauth提供商,并提供社区提供的扩展。
  • >配置涉及在每个社交平台上注册您的应用程序以获取凭据并更新
  • config/services.php>数据库架构调整(例如,通过发送电子邮件和密码无效)是必要的。
  • >
  • 自定义提供商扩展了不支持平台的Socialite功能。
  • >
  • >教程演示了GitHub社交登录,包括OAUTH回调和用户身份验证更新。
  • 基于标准表格的身份验证:

> >在整合社交登录之前,请设置Laravel的基于默认表格的身份验证:

导航到
php artisan make:auth
php artisan migrate
>应显示功能登录页面。

> /login

Easily Add Social Logins to Your App with Socialite

>用社交名称添加社交身份验证:

使用作曲家安装社交名称:

注册服务提供商和
composer require laravel/socialite
的立面:

config/app.php

> Socialite是一种懒惰的单例服务。>
'providers' => [
    // ...
    Laravel\Socialite\SocialiteServiceProvider::class,
],

'aliases' => [
    // ...
    'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],

> configuration:

>在每个所需平台上注册一个OAUTH应用程序,以获取客户端ID和秘密密钥。 将这些凭据添加到>:

>

config/services.php>将实际键值存储在您的

文件中。
'facebook' => [
    'client_id'     => env('FB_CLIENT_ID'),
    'client_secret' => env('FB_CLIENT_SECRET'),
    'redirect'      => env('FB_URL'),
],
// ...similar entries for other providers...

.env数据库修改:

要容纳社交登录,请修改表格架构以允许无效的电子邮件和密码字段。 安装

users创建一个迁移:doctrine/dbal

composer require doctrine/dbal
>更新迁移文件(

)以使

php artisan make:migration prepare_users_table_for_social_authentication --table users

nullable。 database/migrations/...>为链接的社交帐户创建模型和迁移:此迁移应包括email>,password和一个唯一的

>。 运行

LinkedSocialAccount

模型:

在两个模型中定义>>>之间的一对多关系。 在User>中进行LinkedSocialAccountprovider_name质量分配 provider_idLinkedSocialAccount控制器:

>

方法创建

SocialAccountController重定向到OAuth提供商。 redirectToProvider>处理回调,使用A handleProviderCallback助手类查找或创建用户并链接社交帐户。redirectToProvider handleProviderCallbackSocialAccountsService socialAccountsService助手类:

此类的>检查现有链接帐户或创建新用户和链接的方法。

路由:findOrCreate

>

添加社交登录的路线,以重定向和回调:>

routes/web.php> github登录示例:

php artisan make:auth
php artisan migrate

注册一个GitHub Oauth应用程序,获取凭据,然后将其添加到>和>中。在您的登录视图中添加github登录链接。

config/services.php .env

Easily Add Social Logins to Your App with Socialite >社交名流提供者项目:> Easily Add Social Logins to Your App with Socialite >社交名流提供者项目为许多非正式提供者提供。 用社交名流提供商的服务提供商替换Laravel的社交名流服务提供商。 注册每个提供商的事件侦听器,Easily Add Social Logins to Your App with Socialite

> Spotify登录示例:

>使用Composer安装Spotify提供商,在Spotify的开发人员平台上注册该应用程序,将凭据添加到

>,然后将Spotify登录链接添加到您的视图中。 config/app.phpapp/Providers/EventServiceProvider.php

创建自定义提供者:

>创建一个提供者类扩展.env和一个事件侦听器进行注册。 请参阅原始文章中的Deezer提供商示例。

完整的代码可在GitHub上找到。 这篇文章以常见问题解答涵盖安装,配置,错误处理,安全性和测试。

以上是通过社交名录轻松地在您的应用中添加社交登录的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

如何检查电子邮件地址在PHP中是否有效? 如何检查电子邮件地址在PHP中是否有效? Sep 21, 2025 am 04:07 AM

usefilter_var()

如何在PHP中制作对象的深度副本或克隆? 如何在PHP中制作对象的深度副本或克隆? Sep 21, 2025 am 12:30 AM

useunSerialize(serialize($ obj))fordeepcopyingwhenalldataiSerializable;否则,exhiment__clone()tomanallyDuplicateNestedObjectedObjectSandAvoidSharedReference。

如何合并PHP中的两个阵列? 如何合并PHP中的两个阵列? Sep 21, 2025 am 12:26 AM

usearray_merge()tocombinearrays,oftritingDupritingDuplicateStringKeySandReIndexingNumericKeys; forsimplerconcatenation,尤其是innphp5.6,usethesplatoperator [... $ array1,... $ array2]。

如何在PHP项目中使用名称空间? 如何在PHP项目中使用名称空间? Sep 21, 2025 am 01:28 AM

NamespacesinPHPorganizecodeandpreventnamingconflictsbygroupingclasses,interfaces,functions,andconstantsunderaspecificname.2.Defineanamespaceusingthenamespacekeywordatthetopofafile,followedbythenamespacename,suchasApp\Controllers.3.Usetheusekeywordtoi

PHP中的魔术方法是什么,并提供了'__call()和`__get()'的示例。 PHP中的魔术方法是什么,并提供了'__call()和`__get()'的示例。 Sep 20, 2025 am 12:50 AM

__call()methodistred prightedwhenaninAccessibleOrundEfinedMethodiscalledonAnaBject,允许customhandlingByAcceptingTheMethodNameAndarguments,AsshoheNpallingNengallingUndEfineDmethodSlikesayHello()

如何在PHP中获取文件扩展名? 如何在PHP中获取文件扩展名? Sep 20, 2025 am 05:11 AM

usepathinfo($ fileName,pathinfo_extension)togetThefileextension; itreliablyhandlesmandlesmultipledotsAndEdgecases,返回theextension(例如,“ pdf”)oranemptystringifnoneexists。

如何使用PHP更新数据库中的记录? 如何使用PHP更新数据库中的记录? Sep 21, 2025 am 04:47 AM

toupdateadatabaseRecordInphp,firstConnectusingpDoormySqli,thenusepreparedStatementStoExecuteAsecuteAsecuresqurupDatequery.example.example:$ pdo = newpdo(“ mySql:mysql:host = localHost; localhost; localhost; dbname; dbname = your_database = your_database',yous_database',$ username,$ username,$ squeaste;

MySQL条件聚合:使用CASE语句实现字段的条件求和与计数 MySQL条件聚合:使用CASE语句实现字段的条件求和与计数 Sep 16, 2025 pm 02:39 PM

本文深入探讨了在MySQL中如何利用CASE语句进行条件聚合,以实现对特定字段的条件求和及计数。通过一个实际的预订系统案例,演示了如何根据记录状态(如“已结束”、“已取消”)动态计算总时长和事件数量,从而克服传统SUM函数无法满足复杂条件聚合需求的局限性。教程详细解析了CASE语句在SUM函数中的应用,并强调了COALESCE在处理LEFT JOIN可能产生的NULL值时的重要性。

See all articles