laravel5.6 RESTful API系列:集成github登录认证
一个偶然的机会开始学着用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了解的还不透彻,仅仅献给那些喜欢折腾的前端朋友们,希望对你们有点帮助!这只是该系列的第一篇文章,后续会发布更多!敬请期待。
github仓库
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanheagfga
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01