一個偶然的機會開始學着用laravel寫一些接口玩玩,由於單純的寫不管是vue,react,又或者是react-native,沒有一個可用的接口,寫的再好也沒有成就感。就着本身幾年前小打小鬧學的一點php基礎,因而就準備開始折騰laravel,開始寫一些本身的api接口。php
首先,一個完整的api確定會涉及到用戶系統,而目前最好的用戶系統無非就是藉助那些成熟的平臺來直接獲取用戶數據!例如(QQ,微信,微博,github等等!)因爲github在實現的過程相對簡單,沒有QQ一大堆的審覈流程,今天就拿github來玩玩laravel如何接入。前端
經過 Composer
命令安裝:vue
composer require laravel/socialite
複製代碼
經過getcomposer.org/獲取安裝包,一步步來就能夠了。最後能看到下面的界面就說明成功了!react
而後把他註冊到config/app.php
中:laravel
'providers' => [
...
Laravel\Socialite\SocialiteServiceProvider::class,
...
],
'aliases' => [
...
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
...
],
複製代碼
到此Socialite
就已經註冊到應用中了,下面咱們開始github
的application
註冊!git
首先,你須要一個github帳號,這是毋庸置疑的。登陸進去,點擊setting>Developer settings>New OAuth App
。建立github應用github
Authorization callback URL
設置爲:
http://localhost/api/public/api/auth/github/callback
,建立完成以後就能夠看到
client id
和
client secret
。
打開config/services.php
,在其中添加github受權信息:web
<?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
中間件。具體案例以下:json
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.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瞭解的還不透徹,僅僅獻給那些喜歡折騰的前端朋友們,但願對大家有點幫助!這只是該系列的第一篇文章,後續會發布更多!敬請期待。