page contents

Laravel6实现第三方 微信登录

对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库。

attachments-2020-03-Y7fcfSHo5e7ab58a7f885.jpg

目前很多的网站中都会存在很多的交互功能,从而降低用户的操作难度,特此带来微信的第三方登录的项目实战功能开发。对于本实例中的开发内容,就不在使用原生的内容,而是直接使用别人写好的封装的类库。


1. 安装 laravel/socialite

composer require laravel/socialite

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

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


2. 安装 socialiteProviders/weixin

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

composer require socialiteproviders/weixin

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

'providers' => [

     \SocialiteProviders\Manager\ServiceProvider::class,
],

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

protected $listen = [
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        'SocialiteProviders\Weixin\WeixinExtendSocialite@handle',
    ],
];


3. 添加配置

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

WEIXIN_KEY=你的AppID
WEIXIN_SECRET=你的AppSecret
WEIXIN_REDIRECT_URI=你的回调地址

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',
],


代码调用

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

/微信一键登录
Route::get('/weixin', 'WeixinController@weixin')->name('weixin');
Route::get('/weixin/callback', 'WeixinController@weixinlogin');

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use Laravel\Socialite\Facades\Socialite;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;

class WeixinController extends Controller
{
    public function weixin(){
        return Socialite::with('weixin')->redirect();
    }

    public function weixinlogin(){
        $user = Socialite::driver('weixin')->user();
//        dd($user);
        $check = User::where('uid', $user->id)->where('provider', 'qq_connect')->first();
        if (!$check) {
            $customer = User::create([
                'uid' => $user->id,
                'provider' => 'qq_connect',
                'name' => $user->nickname,
                'email' => 'qq_connect+' . $user->id . '@example.com',
                'password' => bcrypt(Str::random(60)),
                'avatar' => $user->avatar
            ]);
        } else {
            $customer = $check;
        }

        Auth::login($customer, true);
        return redirect('/');
    }
}

最后就是回调后打印 oauthUser 的结果


v2-080e91e2932985ec056d99348837bace_720w.jpg


attachments-2020-03-PxexfQos5e7ab5063d5da.jpg

  • 发表于 2020-03-25 09:35
  • 阅读 ( 519 )
  • 分类:PHP开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1478 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章