亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2018年12月06日 09:07:05   作者:如是說(shuō)  
這篇文章主要介紹了laravel5實(shí)現(xiàn)微信第三方登錄功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

背景

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

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

準(zhǔn)備工作

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

總結(jié)下來(lái)就是:

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

到此微信第三方登錄的準(zhǔn)備工作就完成了。

授權(quán)流程說(shuō)明

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

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

Laravel Socialite簡(jiǎn)介

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

安裝相關(guān)依賴

composer require laravel/socialite

安裝weixin-web

composer require socialiteproviders/weixin-web

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

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

相關(guān)配置

1. 設(shè)置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. 設(shè)置app/Providers/EventServiceProvider.php

添加事件監(jiān)聽(tīng)

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. 編寫(xiě)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);
 }
}

訪問(wèn)auth/weixin,獲得返回?cái)?shù)據(jù)。

常見(jiàn)錯(cuò)誤

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

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

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

解決:

通過(guò)stateless()方法禁止會(huì)話狀態(tài)驗(yàn)證

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

總結(jié)

以上所述是小編給大家介紹的laravel5實(shí)現(xiàn)微信第三方登錄功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 解決laravel session失效的問(wèn)題

    解決laravel session失效的問(wèn)題

    今天小編就為大家分享一篇解決laravel session失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • PHP鏈接MySQL的常用擴(kuò)展函數(shù)

    PHP鏈接MySQL的常用擴(kuò)展函數(shù)

    這篇文章主要介紹了PHP鏈接MySQL的常用擴(kuò)展函數(shù),需要的朋友可以參考下
    2014-10-10
  • 淺談關(guān)于PHP解決圖片無(wú)損壓縮的問(wèn)題

    淺談關(guān)于PHP解決圖片無(wú)損壓縮的問(wèn)題

    本篇文章主要介紹了淺談關(guān)于PHP解決圖片無(wú)損壓縮的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Codeigniter的一些優(yōu)秀特性總結(jié)

    Codeigniter的一些優(yōu)秀特性總結(jié)

    本文總結(jié)了一下Codeigniter的一些優(yōu)秀特性,算是個(gè)人的一些心得分享,推薦給大家。
    2015-01-01
  • ThinkPHP5與單元測(cè)試PHPUnit使用詳解

    ThinkPHP5與單元測(cè)試PHPUnit使用詳解

    這篇文章主要介紹了ThinkPHP5與單元測(cè)試PHPUnit使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • yii2緩存Caching基本用法示例

    yii2緩存Caching基本用法示例

    這篇文章主要介紹了yii2緩存Caching基本用法,結(jié)合實(shí)例形式分析了Yii2中緩存的配置、設(shè)置、讀取及判斷等基本用法,需要的朋友可以參考下
    2016-07-07
  • PhpStorm配置Xdebug調(diào)試的方法步驟

    PhpStorm配置Xdebug調(diào)試的方法步驟

    這篇文章主要介紹了PhpStorm配置Xdebug調(diào)試的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • PHP 實(shí)現(xiàn)文件壓縮解壓操作的方法

    PHP 實(shí)現(xiàn)文件壓縮解壓操作的方法

    這篇文章主要介紹了PHP 實(shí)現(xiàn)壓縮解壓操作的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • PHP抓取網(wǎng)頁(yè)、解析HTML常用的方法總結(jié)

    PHP抓取網(wǎng)頁(yè)、解析HTML常用的方法總結(jié)

    這篇文章主要介紹了PHP抓取網(wǎng)頁(yè)、解析HTML常用的方法總結(jié),本文只是對(duì)可以實(shí)現(xiàn)這兩個(gè)需求的方法作了總結(jié),只介紹方法,不介紹如何實(shí)現(xiàn),需要的朋友可以參考下
    2015-07-07
  • 基于PHP實(shí)現(xiàn)微信小程序客服消息功能

    基于PHP實(shí)現(xiàn)微信小程序客服消息功能

    本項(xiàng)目是一個(gè)簡(jiǎn)單微信小程序客服消息類,實(shí)現(xiàn)客服消息相關(guān)功能。本示例是采用開(kāi)發(fā)者服務(wù)器,沒(méi)有采用云調(diào)用的形式。具體實(shí)例代碼大家跟隨小編一起看看吧
    2019-08-08

最新評(píng)論