一個偶然的機會開始學著用laravel寫一些介面玩玩,因為單純的寫無論是vue,react,又或者是react-native,沒有一個可用的介面,寫的再好也沒有成就感。就著自己幾年前小打小鬧學的一點php基礎,於是就準備開始折騰laravel,開始寫一些自己的api介面。
首先,一個完整的api肯定會涉及到使用者系統,而目前最好的使用者系統無非就是藉助那些成熟的平臺來直接獲取使用者資料!例如(QQ,微信,微博,github等等!)由於github在實現的過程相對簡單,沒有QQ一大堆的稽核流程,今天就拿github來玩玩laravel如何接入。
安裝 Socialite
通過 Composer
命令安裝:
composer require laravel/socialite
複製程式碼
composer安裝
通過getcomposer.org/獲取安裝包,一步步來就可以了。最後能看到下面的介面就說明成功了!
然後把他註冊到config/app.php
中:
'providers' => [
...
Laravel\Socialite\SocialiteServiceProvider::class,
...
],
'aliases' => [
...
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
...
],
複製程式碼
到此Socialite
就已經註冊到應用中了,下面我們開始github
的application
註冊!
建立Github應用
首先,你需要一個github賬號,這是毋庸置疑的。登入進去,點選setting>Developer settings>New OAuth App
。建立github應用
Authorization callback URL
設定為:http://localhost/api/public/api/auth/github/callback
,建立完成之後就可以看到client id
和client secret
。
服務配置
開啟config/services.php
,在其中新增github授權資訊:
<?php
return [
………………
/*下面是新增的github授權*/
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'client_secret' => env('GITHUB_CLIENT_SECRET'),
'redirect' => env('GITHUB_REDIRECT'),
],
];
複製程式碼
上面我們沒有直接把授權資訊寫在services裡面,而是寫在了.env
檔案中的變數裡面。
接著開啟.env
檔案
GITHUB_CLIENT_ID = '*********'
GITHUB_CLIENT_SECRET = '*************************'
GITHUB_REDIRECT = 'http://localhost/api/public/api/auth/github/callback'
複製程式碼
定義路由
在routes.php
中新增下面的路由(當然,你也可以隨意命名),但是有一點需要注意,這些路由一定需要web
中介軟體。具體案例如下:
Route::group(['middleware'=>['web']], function () {
Route::get('captcha/{config?}', 'AuthController@captcha');
/*下面就是github認證所需的路由*/
Route::get('auth/github', 'GithubController@redirectToProvider');
Route::get('auth/github/callback', 'GithubController@handleProviderCallback');
});
複製程式碼
新增控制器
php artisan make:controller GithubController
複製程式碼
在GithubController
中新增如下方法:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Socialite;
use App\User;
class GithubController extends Controller
{
public function redirectToProvider()
{
return Socialite::driver('github')->redirect();
}
public function handleProviderCallback()
{
try {
$user = Socialite::driver('github')->user();
} catch (Exception $e) {
return Redirect::to('auth/github');
}
return response()->json([
'data'=>$user
]);
}
}
複製程式碼
上面只是實現了,跳轉到github
,獲得使用者授權之後再跳轉到上面我們設定的callback地址,並且展示獲取的使用者資訊,至於需要建立使用者需要自己去實現。
到這裡基本上就完了。我們開啟http://localhost/api/public/api/auth/github會自動跳轉到github的登入頁。點選登入的時候並不像我們所想的展示使用者資訊!
而是看到這個錯誤頁面,說實話,寫介面最TM
怕這個頁面,這是告訴你,你TM
寫的有問題!
解決 cURL Error
-
首先,下載curl.haxx.se/ca/cacert.p…,然後將
catr.pem
放到Apache
的bin
目錄下。 -
開啟
php.ini
,找到curl.cainfo
去掉前面的:
,填寫cacert.pem
的絕對路徑,如果沒找到請自行新增。
curl.cainfo = "E:\phpStudy\PHPTutorial\Apache\bin\cacert.pem"
複製程式碼
- 重啟
phpstudy
。
再次開啟http://localhost/api/public/api/auth/github
便能成功獲取到認證的使用者資訊,可以從中抽取需要的資訊儲存到資料庫即可!由於本人是從事前端開發,可能對laravel瞭解的還不透徹,僅僅獻給那些喜歡折騰的前端朋友們,希望對你們有點幫助!這只是該系列的第一篇文章,後續會發布更多!敬請期待。