濮阳杆衣贸易有限公司

主頁 > 知識庫 > laravel5實現(xiàn)微信第三方登錄功能

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

熱門標簽:打開百度地圖標注 蘇州外呼系統(tǒng)有效果嗎 山東電銷卡外呼系統(tǒng)原理是什么 地圖標注怎么做商戶驗證 智能電銷語音機器人資訊 海南外呼系統(tǒng)方案 兼職做地圖標注好賺錢嗎 400 電話 辦理 亳州企業(yè)外呼系統(tǒng)

背景

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

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

準備工作

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

總結(jié)下來就是:

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

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

授權(quán)流程說明

1. 第三方發(fā)起微信授權(quán)登錄請求,微信用戶允許授權(quán)第三方應(yīng)用后,微信會拉起應(yīng)用或重定向到第三方網(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)基本操作。

在框架中實現(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 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)聽

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ù)。

常見錯誤

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

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()

總結(jié)

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

您可能感興趣的文章:
  • Laravel 5.4重新登錄實現(xiàn)跳轉(zhuǎn)到登錄前頁面的原理和方法
  • Laravel5.2使用Captcha生成驗證碼實現(xiàn)登錄(session巨坑)
  • laravel5.2實現(xiàn)區(qū)分前后臺用戶登錄的方法
  • 基于Laravel5.4實現(xiàn)多字段登錄功能方法示例
  • Laravel5.5 實現(xiàn)后臺管理登錄的方法(自定義用戶表登錄)
  • 解決laravel5中auth用戶登錄其他頁面獲取不到登錄信息的問題
  • laravel 5.3 單用戶登錄簡單實現(xiàn)方法
  • Laravel5.4框架使用socialite實現(xiàn)github登錄的方法
  • Laravel 5.5 實現(xiàn)禁用用戶注冊示例
  • Laravel5.1 框架登錄和注冊實現(xiàn)方法詳解

標簽:金華 溫州 安康 紹興 綏化 清遠 呼倫貝爾 萊蕪

巨人網(wǎng)絡(luò)通訊聲明:本文標題《laravel5實現(xiàn)微信第三方登錄功能》,本文關(guān)鍵詞  laravel5,實現(xiàn),微信,第三方,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《laravel5實現(xiàn)微信第三方登錄功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于laravel5實現(xiàn)微信第三方登錄功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    阳西县| 土默特左旗| 鄱阳县| 乐安县| 邮箱| 桂阳县| 桦甸市| 肥西县| 广汉市| 和田县| 镇远县| 克东县| 玛沁县| 湛江市| 安陆市| 江口县| 大庆市| 恭城| 孝昌县| 永德县| 新和县| 湾仔区| 汪清县| 武冈市| 阿拉善左旗| 武山县| 辉县市| 阿合奇县| 五台县| 台中市| 张家界市| 会泽县| 崇阳县| 岑溪市| 轮台县| 财经| 上杭县| 塔河县| 宁武县| 桑植县| 正安县|