国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Laravel + EasyWeChat 微信登陸功能

基于:Laravel 5.8.*,以下代碼可能存在一些繼承函數(shù),詳情可訪問開源項(xiàng)目:Github、Gitee。

第一步:去微信公眾號(hào)中設(shè)置和獲取信息

注意:公眾號(hào)必須已經(jīng)認(rèn)證,且必須擁有網(wǎng)頁授權(quán)獲取用戶基本信息的權(quán)限。

開發(fā)-基本配置-公眾號(hào)開發(fā)信息,獲取 app_id 和 app_secret 這兩個(gè)參數(shù)。

開發(fā)-基本配置-公眾號(hào)開發(fā)信息,IP白名單中設(shè)置你的服務(wù)器公網(wǎng)IP。

設(shè)置-公眾號(hào)設(shè)置-功能設(shè)置,業(yè)務(wù)域名中添加你的域名(主要用于防止微信中訪問網(wǎng)頁時(shí)進(jìn)行轉(zhuǎn)碼和風(fēng)險(xiǎn)提示)。

設(shè)置-公眾號(hào)設(shè)置-功能設(shè)置,網(wǎng)頁授權(quán)域名中添加你的域名。

第二步:安裝 EasyWeChat 的 Laravel 5 拓展包

安裝前請(qǐng)切換到項(xiàng)目的根目錄下。

composer require "overtrue/laravel-wechat:~5.0"

注意:安裝完成后 Laravel 默認(rèn)已經(jīng)把 EasyWeChat 做為服務(wù)嵌入到了框架中,所以在開發(fā)中使用的代碼和 EasyWeChat 官方幫助文檔中稍微有不同,當(dāng)然如果你不使用 Laravel 的服務(wù)特性或是原生方式,可以直接按官網(wǎng)的來,更具體可以查看 EasyWeChatEasyWeChat Laravel 5 拓展包的使用文檔。

第三步:創(chuàng)建配置文件

php artisan vendor:publish --provider="Overtrue\LaravelWeChat\ServiceProvider"

第四步:修改配置參數(shù)

這里使用的是微信中登陸功能,因此需要將 app_id 和 secret 修改為你的公眾號(hào)參數(shù),其他默認(rèn)就好,可以在 /config/wechat.php 中修改,或者也可以在 .evn 中添加并賦值,兩個(gè)方式選其一,具體區(qū)別請(qǐng)閱讀官方文檔。

在 /config/wechat.php 中的 official_account 節(jié)點(diǎn)中修改:

/*
 * 公眾號(hào)
 */
'official_account' => [
    'default' => [
        'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'),         // AppID
        'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'),    // AppSecret
        'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'),           // Token
        'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''),                 // EncodingAESKey

        /*
         * OAuth 配置
         *
         * scopes:公眾平臺(tái)(snsapi_userinfo / snsapi_base),開放平臺(tái):snsapi_login
         * callback:OAuth授權(quán)完成后的回調(diào)頁地址(如果使用中間件,則隨便填寫。。。)
         */
        'oauth' => [
            'scopes'   => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
            'callback' => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
        ],
    ],
],

在 .evn 中添加并賦值:

WECHAT_OFFICIAL_ACCOUNT_APPID = your-app-id
WECHAT_OFFICIAL_ACCOUNT_SECRET = your-app-secret

第五步:注冊(cè)中間件

/app/Http/Kernel.php 中的 protected $routeMiddleware 節(jié)點(diǎn)添加

'wechat.oauth' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class,

第六步:創(chuàng)建測(cè)試路由,添加中間件

/routes/web.php 中添加:

Route::get('wechat/auth', function(){
    $wechat = session('wechat.oauth_user.default'); //拿到授權(quán)用戶資料
    dd($wechat); //打印出授權(quán)用戶資料
})->middleware('auth.wechat');

第七步:訪問測(cè)試路由

此時(shí),打開微信,在微信中訪 http://你的域名/wechat/auth 試試,點(diǎn)擊同意授權(quán)后,就會(huì)打印出你當(dāng)前微信的用戶資料。

注意:必須在微信中訪問,因?yàn)樵跒g覽器中訪問是需要微信開放平臺(tái)的接口,不在此教程范圍中。

第八步:創(chuàng)建正式路由,添加中間件

此時(shí)可以注釋或者刪除掉剛才創(chuàng)建的路由信息,并添加正式的路由:

Route::any('wechat/auth', 'Wechat@auth')->middleware(['auth.wechat']);

第九步:創(chuàng)建控制器

/app/Http/Controllers/Wechat.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\DB;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;

class Wechat extends Controller
{
    public function auth(Request $request)
    {
        //由于使用了easyWechat中 中間件的方法進(jìn)行授權(quán),因此一句話搞定直接獲取授權(quán)用戶的信息如下:
        $wechat = session('wechat.oauth_user.default');

        //查詢用戶
        $has = User::where('wechat_openid', $wechat->id)->first();

        //校驗(yàn)用戶是否存在,不存在則創(chuàng)建新用戶
        if(!$has){
            $result = User::create([
                'username' => $wechat->name,
                'password' => bcrypt(Str::random(60)),
                'wechat_openid' => $wechat->id,
                'logined_ip' => $request->getClientIp(),
                'logined' => time(),
                'created' => time(),
                'state' => 1,
            ]);
        }else{
            $result = $has;
        }

        //認(rèn)證登陸
        Auth::login($result, true);

        //獲取跳轉(zhuǎn)地址
        $redirect_url = $request->redirect_url;
        if($redirect_url == ''){
            //如果跳轉(zhuǎn)地址不存在
            return redirect('/user');
        }else{
            return redirect($redirect_url);
        }
    }
}

這個(gè)過程中存在的幾個(gè)坑:

1. 查詢用戶需要用到默認(rèn)的 User 類,如果使用 DB 類去查,例如:

Db::table('user')->where(['wechat_openid' => $wechat->id])->first();

返回的數(shù)據(jù)是無法通過 Auth:login 認(rèn)證的,因此需要引用 use App\User,再通過 User::where 查詢才可以。

  1. User::create 新插入到數(shù)據(jù)庫(kù)到的字段數(shù)據(jù)為空?

需要到 /app/Http/User.php 中查看下 protected $fillable 節(jié)點(diǎn)中是否包含 User::create 中插入的字段,如果沒有則添加。例如:

protected $fillable = [
        'username', 'password', 'email', 'phone', 'avatar', 'wechat_openid', 'logined_ip', 'logined', 'created', 'state',
    ];

3. 提示 create_at 或 update_at 字段不存在?

如果你的用戶數(shù)據(jù)包字段包含 create_at 和 update_at,不會(huì)存在此提示,如果沒有,就要在 User 類中關(guān)閉 Laravel 自帶的時(shí)間字段,依然在 /app/Http/User.php 中添加

public $timestamps = false;

原文:http://www.oneue.com/articles/1328.html

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
詳解用vue.js和laravel實(shí)現(xiàn)微信授權(quán)登陸
【laravel】的啟動(dòng)過程
Lumen/Laravel調(diào)試API接口利器laravel-debugbar
laravel查看執(zhí)行的sql語句
Laravel 5
laravel 框架接入 sentry并發(fā)送錯(cuò)誤到釘釘
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服