zoukankan      html  css  js  c++  java
  • Laravel5.1 实现第三方登录认证教程之

    https://laravel-china.org/topics/2451/laravel51-implementation-of-the-third-party-login-authentication-tutorial-wechat-login

    前言

    近期开发了 PHPHub 的网站应用微信登录,因此编写此文记录开发的过程,希望能帮助到有同样需求的同学。

    文章概览

    1. 准备工作;
    2. 集成 Package;
    3. 代码调用。

    接下来是详细解说。

    准备工作

    首先到微信开放平台申请相关的 网站应用,用以获取接口所需的 AppID 和 AppSecret。

    一般来说需要花费 3 - 5 个工作日。

    file

    集成 Package

    我们使用 laravel/socialite 扩展包来进行 OAuth 认证,它提供了完整且上手毫无难度的 OAuth 解决方案。

    在此基础上使用其 Driver 扩展 socialiteProviders/weixin 来完成微信的 OAuth 认证流程。

    1. 安装 laravel/socialite

    如果你已经安装过此 Package,则可以跳过此步骤。

    1). 直接运行以下命令安装扩展包

    composer require laravel/socialite
    

    2). 在你的 config/app.php 文件中添加以下配置信息

    'providers' => [
        ...
        // 注意:下文中要集成 Socialite Driver 扩展,因此将会删除此行配置。
        LaravelSocialiteSocialiteServiceProvider::class,
    ],
    
    'aliases' => [
        ...
        'Socialite' => LaravelSocialiteFacadesSocialite::class,
    ],
    

    2. 安装 socialiteProviders/weixin

    1). 直接运行以下命令安装扩展包

    composer require socialiteproviders/weixin
    

    2). 在你的 config/app.php 文件中添加以下配置信息

    'providers' => [
        ...
        # 注意:如果你之前已经安装了 laravel/socialite,则务必删除掉下面的配置
        // 删除这行配置 LaravelSocialiteSocialiteServiceProvider::class,
    
        # 新增配置
         SocialiteProvidersManagerServiceProvider::class,
    ],
    

    3). 在你的 app/Providers/EventServiceProvider.php 文件中添加以下事件处理器

    protected $listen = [
        SocialiteProvidersManagerSocialiteWasCalled::class => [
            'SocialiteProvidersWeixinWeixinExtendSocialite@handle',
        ],
    ];
    

    3. 添加配置

    1). 在你的 .env 文件中添加以下配置

    WEIXIN_KEY=你的AppID
    WEIXIN_SECRET=你的AppSecret
    WEIXIN_REDIRECT_URI=你的回调地址
    
    # 例如
    WEIXIN_KEY=wxba52fab0726b9023
    WEIXIN_SECRET=xxxxxxxxxxxxxxxxxx
    WEIXIN_REDIRECT_URI=https://laravel-china.org/auth/callback?driver=wechat
    

    2). 在你的 config/services.php 文件中添加以下配置

    'weixin' => [
       'client_id'     => env('WEIXIN_KEY'),
       'client_secret' => env('WEIXIN_SECRET'),
       'redirect'      => env('WEIXIN_REDIRECT_URI'),
    
       # 这一行配置非常重要,必须要写成这个地址。
       'auth_base_uri' => 'https://open.weixin.qq.com/connect/qrconnect',
    ],
    

    至此,安装全部完成。

    代码调用

    准备工作都完成以后,现在就到了接口对接阶段。

    1). 添加路由

    # 用户点击登录按钮时请求的地址
    Route::get('/auth/oauth', 'AuthAuthController@oauth');
    
    # 微信接口回调地址
    Route::get('/auth/callback', 'AuthAuthController@callback');
    

    2). 在你的 app/Http/Controllers/Auth/AuthController.php 文件里添加以下方法

    # 用户点击微信登录按钮后,调用此方法请求微信接口
    public function oauth(Request $request)
    {
        return Socialite::with('weixin')->redirect();
    }
    
    # 微信的回调地址
    public function callback(Request $request)
    {
        $oauthUser = Socialite::with('weixin')->user();
    
        // 在这里可以获取到用户在微信的资料
        dd($oauthUser);
    
        // 接下来处理相关的业务逻辑
    
        ...
    
    }
    

    下图是打印 oauthUser 的结果,供大家参考

    file

    至此,已经能获取到用户的微信资料了,接下来你们就可以根据此数据处理自己的相关业务逻辑了。

    在这里值得一提的是,我们通过微信的 unionid 来记录用户的信息,而不是 openid。因为针对一个微信开放平台帐号下的应用,同一用户的 unionid 是相同的,这样方便我们以后做多站点的用户数据统一。

    附录

    网站应用微信登录开发指南

  • 相关阅读:
    对于学习 ionic的同学安装的时候肯定很痛苦 get 一个小技巧
    关于Android sdk有事安装出现报Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml错误的问题 只要两部就可以搞定
    很多同学工作了,这里呢简单说说工作中吧可能会遇到的一些事情‘
    css定位机制
    HBuilder简单操作
    前端学习方法小结
    Ajax基础讲解 1
    css hack
    jQuery自定义滚动条样式插件mCustomScrollbar 兼容IE7的方法
    ie下面兼容性问题的一些总结(转)
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9428594.html
Copyright © 2011-2022 走看看