laravel学习笔记林梓技术分享集

Laravel用开放平台实现微信授权登录

2017-12-07  本文已影响456人  童蒙vlog

前言

之前用easywechat开发过微信公众平台授权登陆,今天发现这篇文章用微信开放平台实现起来更简单。

以下为转载内容:

近期开发了 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 扩展,因此将会删除此行配置。
    Laravel\Socialite\SocialiteServiceProvider::class,
],

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

2. 安装 socialiteProviders/weixin-web

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

composer require socialiteproviders/weixin-web

2). 在你的

config/app.php

文件中添加以下配置信息

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

    # 新增配置
     \SocialiteProviders\Manager\ServiceProvider::class,
],

3). 在你的

app/Providers/EventServiceProvider.php

文件中添加以下事件处理器

protected $listen = [
   \SocialiteProviders\Manager\SocialiteWasCalled::class => [
            'SocialiteProviders\WeixinWeb\WeixinWebExtendSocialite@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=wechatweb

2). 在你的

config/services.php

文件中添加以下配置

'weixinweb' => [
   'client_id'     => env('WEIXIN_KEY'),
   'client_secret' => env('WEIXIN_SECRET'),
   'redirect'      => env('WEIXIN_REDIRECT_URI'),
],

至此,安装全部完成。

代码调用

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

1). 添加路由

# 用户点击登录按钮时请求的地址
Route::get('/auth/oauth', 'Auth\AuthController@oauth');

# 微信接口回调地址
Route::get('/auth/callback', 'Auth\AuthController@callback');

2). 在你的

app/Http/Controllers/Auth/AuthController.php

文件里添加以下方法

# 用户点击微信登录按钮后,调用此方法请求微信接口
public function oauth(Request $request)
{
    return \Socialite::with('weixinweb')->redirect();
}

# 微信的回调地址
public function callback(Request $request)
{
    $oauthUser = \Socialite::driver('weixinweb')->user();

    // 在这里可以获取到用户在微信的资料
    dd($oauthUser);

    // 接下来处理相关的业务逻辑

    ...

}

更多登录方式请参见:
http://socialiteproviders.github.io/providers/weixin-web/

上一篇 下一篇

猜你喜欢

热点阅读