一个偶然的机会开始学着用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了解的还不透彻,仅仅献给那些喜欢折腾的前端朋友们,但愿对大家有点帮助!这只是该系列的第一篇文章,后续会发布更多!敬请期待。