溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel5實現(xiàn)微信第三方登錄功能

發(fā)布時間:2020-03-02 15:07:49 來源:網(wǎng)絡 閱讀:461 作者:dolunbu 欄目:web開發(fā)

背景

最近手頭一個項目需要實現(xiàn)用戶在網(wǎng)站的第三方登錄(微信和微博),后端框架laravel5.4。

實現(xiàn)過程以微信網(wǎng)頁版第三方登錄,其他于此類似,在此不做重復。

準備工作

網(wǎng)站應用微信登錄是基于OAuth3.0協(xié)議標準構(gòu)建的微信OAuth3.0授權(quán)登錄系統(tǒng)。
在進行微信OAuth3.在進行微信OAuth3.0授權(quán)登錄接入之前,在微信開放平臺注冊開發(fā)者帳號,并擁有一個已審核通過的網(wǎng)站應用,并獲得相應的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。

總結(jié)下來就是:

1.進入微信開放平臺注冊開發(fā)者賬號
2.根據(jù)項目類型創(chuàng)建應用,再此我創(chuàng)建的是網(wǎng)站應用.
3.接入微信登陸功能,讓用戶可使用微信登錄你的網(wǎng)站應用
4.獲得AppID和AppSectet

到此微信第三方登錄的準備工作就完成了。

授權(quán)流程說明

1. 第三方發(fā)起微信授權(quán)登錄請求,微信用戶允許授權(quán)第三方應用后,微信會拉起應用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)臨時票據(jù)code參數(shù);
2. 通過code參數(shù)加上AppID和AppSecret等,通過API換取access_token;
3. 通過access_token進行接口調(diào)用,獲取用戶基本數(shù)據(jù)資源或幫助用戶實現(xiàn)基本操作。

laravel5實現(xiàn)微信第三方登錄功能

在框架中實現(xiàn)(laravel)

Laravel Socialite簡介

除了傳統(tǒng)的基于表單的登錄認證外,Laravel 還可以通過Laravel Socialite 提供 OAuth 認證,目前支持的認證驅(qū)動包括 Facebook、Twitter、Google、LinkedIn、GitHub 和 Bitbucket。

安裝相關(guān)依賴

composer require laravel/socialite

安裝weixin-web

composer require socialiteproviders/weixin-web

注意網(wǎng)站實現(xiàn)微信登錄需要的依賴包為socialiteproviders/weixin-web,如果是手機端App那么可以用socialiteproviders/weixin。

shanlei@shanlei-Lenovo-ideapad-110-15ISK:/var/www/html/zslm_back$ composer search socialiteproviders/weixin
socialiteproviders/weixin Weixin OAuth3 Provider for Laravel Socialite
socialiteproviders/weixin-web Weixin-Web OAuth3 Provider for Laravel Socialite
socialiteproviders/weixin-web Weixin-Web OAuth3 Provider for Laravel Socialite
socialiteproviders/weixin Weixin OAuth3 Provider for Laravel Socialite

相關(guān)配置

1. 設置app/config.php

添加providers:

'providers' => [
SocialiteProviders\Manager\ServiceProvider::class,
],

添加aliases:

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

2. 配置config/services.php

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

3. 設置app/Providers/EventServiceProvider.php

添加事件監(jiān)聽

use SocialiteProviders\Manager\SocialiteWasCalled;
protected $listen = [
'SocialiteProviders\Manager\SocialiteWasCalled' => [
'SocialiteProviders\WeixinWeb\WeixinWebExtendSocialite@handle',
],
];

4. 添加路由

Route::get('auth/weixin', 'Auto\ThirdLogin\WeixinController@redirectToProvider');
Route::get('auth/weixin/callback','Auto\ThirdLogin\WeixinController@handleProviderCallback');

5. 編寫WeixinController

<?php
/**
* Created by PhpStorm.
* User: shanlei
* Date: 1/6/2017
* Time: 11:34 AM
*/

namespace App\Http\Controllers\Auto\ThirdLogin;

use Socialite;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use SocialiteProviders\WeixinWeb\Provider;

class WeixinController extends Controller{
public function redirectToProvider(Request $request)
{
return Socialite::with('weixinweb')->redirect();
}
public function handleProviderCallback(Request $request)
{
$user_data = Socialite::with('weixinweb')->stateless()->user();
dd($user_data);
}
}

訪問auth/weixin,獲得返回數(shù)據(jù)。

laravel5實現(xiàn)微信第三方登錄功能

常見錯誤

1. 微信授權(quán)回調(diào)域不符(redirect_uri不符),參見下面規(guī)范:

laravel5實現(xiàn)微信第三方登錄功能

2. 執(zhí)行過程中出現(xiàn)一下錯誤:

exception 'Laravel\Socialite\Two\InvalidStateException' 
in /example/vendor/laravel/socialite/src/Two/AbstractProvider.php:161

解決:

通過stateless()方法禁止會話狀態(tài)驗證

Socialite::driver('weixinweb')->stateless()->user()


您可能感興趣的文章:
  • PHP后臺實現(xiàn)微信小程序登錄

  • 詳解Vue微信授權(quán)登錄前后端分離較為優(yōu)雅的解決方案

  • vue 微信授權(quán)登錄解決方案

  • 一步步教會你微信小程序的登錄鑒權(quán)

  • 微信小程序獲取手機號授權(quán)用戶登錄功能

  • java實現(xiàn)微信小程序登錄態(tài)維護的示例代碼

  • 詳解微信小程序 登錄獲取unionid

  • 關(guān)于在vue-cli中使用微信自動登錄和分享的實例

  • 微信小程序 新建登錄頁并實現(xiàn)tabBar隱藏

  • 微信小程序中做用戶登錄與登錄態(tài)維護的實現(xiàn)詳解

  • 第三方網(wǎng)站微信登錄java代碼實現(xiàn)

  • 微信小程序?qū)崙?zhàn)之登錄頁面制作(5)

文章同步發(fā)布: https://www.geek-share.com/detail/2755097818.html


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI