Laravel6實現第三方 微信登錄


目前很多的網站中都會存在很多的交互功能,從而降低用戶的操作難度,特此帶來微信的第三方登錄的項目實戰功能開發。對於本實例中的開發內容,就不在使用原生的內容,而是直接使用別人寫好的封裝的類庫。

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 的結果  

 

 

 如果有想過操作問題,想交流工作問題以及代碼可以加入:647617935


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM