第三方登录的具体实现(不依赖于框架 )
2018-03-13 11:51
411 查看
官方包地址 https://packagist.org/packages/overtrue/socialite
场景:
laravel项目第三方登录可以使用 laravel/socialite
不限制框架的第三方包 overtrue/socialite
使用方法:
1. 准备工作
composer require "overtrue/socialite"
github申请oauth Apps
2. web需要生成两个函数
触发Oauth认证的函数:
/**
* github 跳转认证的入口
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function githubLogin()
{
$socialite = new SocialiteManager(config('services'));
return $socialite->driver('github')->redirect();
} Oauth返回进行逻辑处理的函数
/**
* github callback
*/
public function githubCallback()
{
// oauth
$socialite = new SocialiteManager(config('services'));
$user = $socialite->driver('github')->user();
// register for the first time or not base on social_type and social
$social_type = strtolower($user->getProviderName());
$social_id = $user->getId();
$web_user = \App\User::where(compact('social_id', 'social_type'))->first();
if (!$web_user) {
// register data
$params = [
'name' => $user->getNickname(),
'email' => $user->getEmail(),
'password' => bcrypt(str_random(16)),
'confirm_code' => bcrypt(str_random(32)),
'avatar' => $user->getAvatar(),
'is_confirmed' => 1,
'social_id' => $social_id,
'social_type' => $social_type
];
$web_user = \App\User::create($params);
}
// login
\Auth::login($web_user);
// 跳转到登陆之前的页面
if (\Session::has('redirect_url')) {
$redirect_url = \Session::get('redirect_url');
\Session::forget('redirect_url');
return redirect($redirect_url);
}
return redirect('/');
}注意:
1. callback
注册Oauth Apps的 callback url 非常重要 (oauth完成验证后 调用的url)
会和Web传递的url 对比,需要完全一致
2. social_type social_id
逻辑: 判断唯一性的依据是 oauth privider_name and oath id
如果已经插入了 则跳转登录
否则 插入登录,插入的信息根据个人需要删减
场景:
laravel项目第三方登录可以使用 laravel/socialite
不限制框架的第三方包 overtrue/socialite
使用方法:
1. 准备工作
composer require "overtrue/socialite"
github申请oauth Apps
2. web需要生成两个函数
触发Oauth认证的函数:
/**
* github 跳转认证的入口
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function githubLogin()
{
$socialite = new SocialiteManager(config('services'));
return $socialite->driver('github')->redirect();
} Oauth返回进行逻辑处理的函数
/**
* github callback
*/
public function githubCallback()
{
// oauth
$socialite = new SocialiteManager(config('services'));
$user = $socialite->driver('github')->user();
// register for the first time or not base on social_type and social
$social_type = strtolower($user->getProviderName());
$social_id = $user->getId();
$web_user = \App\User::where(compact('social_id', 'social_type'))->first();
if (!$web_user) {
// register data
$params = [
'name' => $user->getNickname(),
'email' => $user->getEmail(),
'password' => bcrypt(str_random(16)),
'confirm_code' => bcrypt(str_random(32)),
'avatar' => $user->getAvatar(),
'is_confirmed' => 1,
'social_id' => $social_id,
'social_type' => $social_type
];
$web_user = \App\User::create($params);
}
// login
\Auth::login($web_user);
// 跳转到登陆之前的页面
if (\Session::has('redirect_url')) {
$redirect_url = \Session::get('redirect_url');
\Session::forget('redirect_url');
return redirect($redirect_url);
}
return redirect('/');
}注意:
1. callback
注册Oauth Apps的 callback url 非常重要 (oauth完成验证后 调用的url)
会和Web传递的url 对比,需要完全一致
2. social_type social_id
逻辑: 判断唯一性的依据是 oauth privider_name and oath id
如果已经插入了 则跳转登录
否则 插入登录,插入的信息根据个人需要删减
相关文章推荐
- TP框架实现第三方登录(QQ/微信)
- 集合框架_用户登录注册案例详细分析和分包的实现、用户基本描述类和用户操作接口的实现、用户操作类的具体实现、用户测试类的实现、加入猜数字小游戏
- Laravel5.1 实现第三方登录认证(包括微博、QQ、微信、豆瓣) 2017-01-08 18:08 457人阅读 评论(0) 收藏 举报 分类: laravel框架(33) 目录(?)[
- spring 框架中的依赖注入(IOC--设值注入)---使用xml简单配置文件---的具体实例的简单实现
- tp框架实现第三方QQ快捷登录
- TP框架实现第三方登录--微信登录
- TP框架实现第三方登录--微信登录
- Android 实现第三方Facebook登录的具体实现
- spring 框架中的依赖注入(IOC--设值注入)--使用注解--的具体实例的简单实现
- 基于Spring的新浪微博第三方登录实现
- java实现zip解压缩工具,不依赖第三方类库
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能
- 登录口令加密函数、用户登录主Form实现方法和具体代码
- Yii框架应用程序整合Ucenter实现同步注册、登录和退出等
- 利用JS_SDK实现QQ第三方登录
- 关于使用微信登录第三方APP的实现(Android版)
- iOS之ShareSDK实现分享、第三方登录等功能
- 猫猫学习ios 之第三方登录友盟实现