国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah pembangunan bahagian belakang tutorial php php的laravel框架快速集成微信登錄的方法

php的laravel框架快速集成微信登錄的方法

Jan 14, 2017 am 11:44 AM

本文面向的是php語言laravel框架的用戶,介紹的是基于該框架實(shí)現(xiàn)的一個簡易集成微信登錄的方法。使用方法如下:

1. 安裝php_weixin_provider

在項(xiàng)目下運(yùn)行composer require thirdproviders/weixin,即可完成安裝。安裝成功后,在項(xiàng)目的vendor目錄下應(yīng)該能看到php_weixin_provider的庫文件:

php的laravel框架快速集成微信登錄的方法

2. 配置微信登錄的參數(shù)

一共有7個參數(shù)可以配置,分別是:

client_id:對應(yīng)公眾號創(chuàng)建的應(yīng)用appid

client_secret:對應(yīng)公眾號創(chuàng)建的應(yīng)用appid

redirect:對應(yīng)微信授權(quán)成功后的回調(diào)地址

proxy_url:對應(yīng)微信授權(quán)的代理服務(wù)地址(其作用可閱讀這篇文章了解)

device:區(qū)別是PC端微信登錄還是移動端微信登錄,默認(rèn)值為pc,如果是移動端,可設(shè)置為空

state_cookie_name:授權(quán)鏈接中會包含隨機(jī)的state參數(shù),這個參數(shù)在微信回調(diào)的時候會原封不動的返回來,屆時可通過驗(yàn)證state參數(shù)是否與授權(quán)鏈接中傳入的參數(shù)相同,來判斷請求是否有效,防止CSRF攻擊。這個方案,會在授權(quán)時把state參數(shù)先存到cookie里面,所以這個參數(shù)用來指定這個state參數(shù)存入的cookie名稱,默認(rèn)值是wx_state_cookie

state_cookie_time:指定wx_state_cookie的有效時長,默認(rèn)是5分鐘

這七個參數(shù)有2種設(shè)置方式。

第一種是把這些參數(shù)以大寫的形式配置到.env配置文件里面:

php的laravel框架快速集成微信登錄的方法

注:1、每個配置項(xiàng)都是大寫,且以WEIXIN_開頭;2、前三個配置項(xiàng)與前面介紹的參數(shù)名稱不完全一致,KEY對應(yīng)client_id,SECRET對應(yīng)client_secret,REDIRECT_URI對應(yīng)redirect;3、其它的與前面介紹的參數(shù)名稱一致。

第二種是把這些參數(shù)配置到config/services.php文件里面去:

php的laravel框架快速集成微信登錄的方法

這種方式的配置,每個配置項(xiàng)的名稱與前面介紹的一致。

要注意的內(nèi)容:

由于php_weixin_provider是基于laravel/socialite實(shí)現(xiàn)的,它要求必須配置client_id,client_secret和redirect,否則php_weixin_provider實(shí)例化過程就會出錯;對于client_id和client_secret,我認(rèn)為統(tǒng)一配置在一個地方是沒有問題的,但是對于redirect,如果統(tǒng)一配置,不一定符合所有場景的需求,因?yàn)椴皇敲恳粋€用到微信登錄的地方,最后的回調(diào)地址都是同一個;所以建議把redirect先配置成一個有效或無效非空的回調(diào)地址;反正在后面使用php_weixin_provider的時候還可以在調(diào)用的時候更改這個參數(shù)的值。

proxy_url如果有,也建議配置在公共的地方;

state_cookie_name和state_cookie_time由于都有默認(rèn)值,基本上無需重新配置;
device可以在使用的時候再指定。

所有配置參數(shù)都可以在使用的時候重新指定。

3. 注冊php_weixin_provider

在項(xiàng)目的config/app.php文件里面,找到providers配置節(jié),把如下代碼加到它的配置數(shù)組里面:

php的laravel框架快速集成微信登錄的方法

4. 注冊第三方登錄事件的監(jiān)聽

在項(xiàng)目的app/Providers/EventServiceProvider.php里面加入以下代碼:

php的laravel框架快速集成微信登錄的方法

laravel框架整體上是一種IOC跟事件驅(qū)動的思想,熟悉js就會對事件驅(qū)動非常熟悉,熟悉設(shè)計模式,就會對IOC(控制反轉(zhuǎn),也稱為DI:依賴注入)比較熟悉,這個是理解第3步和第4步配置作用的關(guān)鍵。

5. 編寫微信登錄的接口

舉例如下:

//采用代理跳轉(zhuǎn),從PC端微信登錄
Route::get('/login', function () {
 return Socialite::with('weixin')
  ->setProxyUrl('http://proxy.your.com')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});
//采用代理跳轉(zhuǎn),從手機(jī)端微信登錄
Route::get('/login2', function () {
 return Socialite::with('weixin')
  ->setProxyUrl('http://proxy.your.com')
  ->setDevice('')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});
//不采用代理跳轉(zhuǎn),從PC端微信登錄
Route::get('/login', function () {
 return Socialite::with('weixin')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});
//不采用代理跳轉(zhuǎn),從手機(jī)端微信登錄
Route::get('/login4', function () {
 return Socialite::with('weixin')
  ->setDevice('')
  ->setRedirectUrl(url('/login/notify'))
  ->redirect();
});

Socialite::with('weixin')會返回php_weixin_provider的實(shí)例,也就是它:

php的laravel框架快速集成微信登錄的方法

拿到這個實(shí)例之后,就可以采用鏈?zhǔn)降姆绞秸{(diào)用它提供的所有public方法,比如設(shè)置配置參數(shù),setDevice等等。

6. 編寫微信登錄回調(diào)的接口

舉例如下:

//登錄回調(diào)
Route::get('/login/notify', function () {
 $user = null;
 try {
  $user = Socialite::with('weixin')->user();
 } catch(\Exception $e) {
  return '獲取微信用戶異常';
 }
 return $user->nickname;
});

通過Socialite::with('weixin')拿到php_weixin_provider實(shí)例后,調(diào)用user方法,就會自動跟微信調(diào)用相關(guān)接口,并把微信的返回值封裝成對象返回。如果在此過程中,有任何錯誤都會以異常的形式拋出,比如state參數(shù)校驗(yàn)失敗,比如code失效等。

返回的$user對象包含的有效屬性有:

php的laravel框架快速集成微信登錄的方法

小結(jié):

這個方案是基于laravel/socialite實(shí)現(xiàn),并發(fā)布到composer來使用的。laravel/socialite是laravel官方提供的第三方登錄的模塊,基于它可以很方便的集成大部分第三方平臺的認(rèn)證,目前它官方已經(jīng)提供很多第三方的登錄實(shí)現(xiàn):https://socialiteproviders.github.io/。除了國外的facebook,google,github等,國內(nèi)的微信,微博,qq也都有提供。我在一開始也用的是它官方提供的默認(rèn)的微信登錄provider來做的,但是后來我發(fā)現(xiàn)了以下幾個問題:

1. 不支持微信授權(quán)的代理;

2. pc端跟移動端竟然還是分兩個項(xiàng)目來做的:?

php的laravel框架快速集成微信登錄的方法

3. 它封裝的user對象里竟然不包含unionid

4. 更改配置參數(shù)的方式,實(shí)在是讓人覺得難以使用:?

php的laravel框架快速集成微信登錄的方法

所以我就在它官方的微信登錄provider基礎(chǔ)上,按照自己的想法,重新實(shí)現(xiàn)了一個來解決我發(fā)現(xiàn)的這些問題。

更多php的laravel框架快速集成微信登錄的方法相關(guān)文章請關(guān)注PHP中文網(wǎng)!


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

Cara mengakses watak dalam rentetan dengan indeks dalam php Cara mengakses watak dalam rentetan dengan indeks dalam php Jul 12, 2025 am 03:15 AM

Dalam PHP, anda boleh menggunakan kurungan persegi atau pendakap keriting untuk mendapatkan aksara indeks spesifik rentetan, tetapi kurungan persegi disyorkan; Indeks bermula dari 0, dan akses di luar julat mengembalikan nilai null dan tidak dapat diberikan nilai; MB_SUBSTR dikehendaki mengendalikan watak multi-bait. Sebagai contoh: $ str = "hello"; echo $ str [0]; output h; dan watak -watak Cina seperti MB_SUBSTR ($ str, 1,1) perlu mendapatkan hasil yang betul; Dalam aplikasi sebenar, panjang rentetan perlu diperiksa sebelum gelung, rentetan dinamik perlu disahkan untuk kesahihan, dan projek berbilang bahasa mengesyorkan menggunakan fungsi keselamatan multi-bait secara seragam.

Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

See all articles