thirdparty_oauth

这是一个社会第三方登录扩展包 目前支持 微信、qq、微博、github gitee gitlaba 等第三方登录.



[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vP3Ar8dQ-1600413022168)(https://github.styleci.io/repos/295677202/shield)]

安装

$ composer require pltrue/thirdparty_oauth  ^1.0.3

贡献

你可以通过以下三种方式做出贡献:

  1. bug反馈 issue tracker.
  2. 回答问题或修复错误 issue tracker.
  3. 贡献新特性或更新wiki。

兼容

  • 支持php >=5.6

如何使用


如何申请应用授权?

参数说明

redirect_url 回调地址将使用方法写到回调接口即可 获取到用户的一些基础信息

client_id 应用授权id

client_secret 应用授权key

建议

前后端分离下建议前端直接请求授权接口,后端负责回调接口即可

php项目中如何使用


授权方法


require __DIR__ .'/vendor/autoload.php'; use Pl1998\ThirdpartyOauth\SocialiteAuth; $api = new SocialiteAuth([
'client_id' => '74ee75f10437b4862d653a682111e5ddca1d24422f00ec884453ad232ae07ac9',
'redirect_uri' => 'http://oauth.test/test.php'
]);
// 注意格式 github gitee gitlab weibo weixin qq
$json = $api->redirect('weibo'); var_dump($json);

回调接口方法


require __DIR__ .'/vendor/autoload.php'; use Pl1998\ThirdpartyOauth\SocialiteAuth; $api = new SocialiteAuth([
'client_id' => '74ee75f10437b4862d653a682111e5ddca1d24422f00ec884453ad232ae07ac9',
'redirect_uri' => 'http://oauth.test/test.php',
'client_secret' => ''
]);
// 注意格式 github gitee gitlab weibo weixin qq
$user = $api->driver('gitee')->user(); var_dump($user);die;

在Thinkphp中如何使用?



//在路由文件新建两条路由
Route::get('authorization','api/TestController/authorization')->name('请求授权');
Route::get('gitee/callback','api/TestController/giteeCallback')->name('授权回调接口');

配置文件

return [
// 注意格式 github gitee gitlab weibo weixin qq
'github' => [
'client_id' => '2365a07a73dc25a27e5c7a968248b96beb53a1ad300de7ba6bf4ffe247a4b386',
'redirect_uri' => 'http://test.test/gitee/callback',
'client_secret' => ''
],
'github' => [
'client_id' => '2365a07a73dc25a27e5c7a968248b96beb53a1ad300de7ba6bf4ffe247a4b386',
'redirect_uri' => 'http://test.test/gitee/callback',
'client_secret' => ''
]
];

<?php
/**
* Created by PhpStorm
* User: pl
* Date: 2020/9/17
* Time: 14:56
*/ namespace app\api\controller; use Pl1998\ThirdpartyOauth\SocialiteAuth;
use think\facade\Config; class TestController
{ /**
* 该方法重定向后会执行giteeCallback() 方法
* @return int
*/
public function authorization()
{
$auth = new SocialiteAuth(Config::get('aouth.github'));
// 注意格式 github gitee gitlab weibo weixin qq
return $auth->redirect('github'); } /**
* @throws \Pl1998\ThirdpartyOauth\Exceptions\InvalidArgumentException
*/
public function giteeCallback()
{
$api = new SocialiteAuth(Config::get('aouth.github'));
// 注意格式 github gitee gitlab weibo weixin qq
$user = $api->driver('github')->user(); var_dump($user); //判断用户是否存在表中 然后存入session 或者颁发token 返回给前端
}
}

在laravel中如何使用?

在laravle的 service.php配置文件中加入配置


.
.
.
// 注意格式 github gitee gitlab weibo weixin qq
'oauth' => [
'github' => [
'client_id' => env('GITHUB_CLIENT_ID'),
'redirect_uri' => env('GITHUB_REDIRECT_URI'),
'client_secret'=>env('GITHUB_CLIENT_SECRET')
]
]
.....

在 .env中配置

GITHUB_CLIENT_ID=xxxx
GITHUB_REDIRECT_URI=xxx
GITHUB_CLIENT_SECRET=xxx

创建路由

Route::get('auth/github','IndexController@auth')->name('github授权');
Route::get('callback/github','IndexController@callback')->name('github回调接口');

控制器方法

 /**
* 授权方法
* @return mixed
*/
public function auth()
{
//普通写法
// $auth = new SocialiteAuth(config('services.oauth'));
// $auth->redirect('github'); //laravel 容器使用
app('socialiteAuth')->redirect('github'); }
/**
* 回调方法
*/
public function callback()
{
//普通写法
//$auth = new SocialiteAuth(config('services.oauth.github'));
//$user = $auth->driver('github')->user();
//var_dump($user);
//laravel 容器使用
$user = app('socialiteAuth')->driver('github')->user();
var_dump($user);
}

返回示例

{
"login": "pl1998",
"id": 43993206,
"node_id": "MDQ6VXNlcjQzOTkzMjA2",
"avatar_url": "https://avatars1.githubusercontent.com/u/43993206?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/pl1998",
"html_url": "https://github.com/pl1998",
"followers_url": "https://api.github.com/users/pl1998/followers",
"following_url": "https://api.github.com/users/pl1998/following{/other_user}",
"gists_url": "https://api.github.com/users/pl1998/gists{/gist_id}",
"starred_url": "https://api.github.com/users/pl1998/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/pl1998/subscriptions",
"organizations_url": "https://api.github.com/users/pl1998/orgs",
"repos_url": "https://api.github.com/users/pl1998/repos",
"events_url": "https://api.github.com/users/pl1998/events{/privacy}",
"received_events_url": "https://api.github.com/users/pl1998/received_events",
"type": "User",
"site_admin": false,
"name": "pltrue",
"company": null,
"blog": "pltrue.top",
"location": "深圳",
"email": null,
"hireable": null,
"bio": null,
"twitter_username": null,
"public_repos": 6,
"public_gists": 0,
"followers": 1,
"following": 1,
"created_at": "2018-10-09T12:42:14Z",
"updated_at": "2020-09-17T04:49:23Z"
}

License


MIT

php 第三方网页应用授权登录扩展包 支持 微信、qq、微博、github gitee gitlaba 等第三方登录的更多相关文章

  1. tp5集成淘宝,微信,网易,新浪等第三方登录

    tp5集成淘宝,微信,网易,新浪等第三方登录 一.总结 一句话总结: 接口 链接 实现的话就是这些平台给的一个接口(链接),你通过这些接口登录进去之后,它会给你返回用户名,头像之类的信息,我们的网站存 ...

  2. 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)

    微信.QQ.新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483 微信.QQ.新浪微博等第三方登录,你想知道的都在这了(下):h ...

  3. 对QQ、微信等第三方登录的几个思考

    转自:http://www.jianshu.com/p/7f282dfc16fc 今天聊聊注册.登录环节中很常见的第三方登录,如QQ.微信.支付宝.新浪微博等.虽然这些产品的开放平台都提供了标准的接入 ...

  4. SpringCloud微服务实战——搭建企业级开发框架(四十一):扩展JustAuth+SpringSecurity+Vue实现多租户系统微信扫码、钉钉扫码等第三方登录

      前面我们详细介绍了SSO.OAuth2的定义和实现原理,也举例说明了如何在微服务框架中使用spring-security-oauth2实现单点登录授权服务器和单点登录客户端.目前很多平台都提供了单 ...

  5. 关于使用QQ、新浪微博、腾讯微博等第三方登录网站的开发过程(二)

    (二).新浪微博登录 1. 首先在新浪微博开放平台注册成为开发者.[http://open.weibo.com/connect] 具体自己填写一些相关信息就OK! 2. 注册成功之后,点击[微连接], ...

  6. Vue3.0网页版聊天|Vue3.x+ElementPlus仿微信/QQ界面|vue3聊天实例

    一.项目简介 基于vue3.x+vuex+vue-router+element-plus+v3layer+v3scroll等技术构建的仿微信web桌面端聊天实战项目Vue3-Webchat.基本上实现 ...

  7. laravel 社会化(联合)登录扩展包(QQ、微信、微博等)

    laravel的官方包只支付国外网站的联合登录:http://laravelacademy.org/post/6288.html 国内用户的话,可以用这个:https://github.com/ove ...

  8. Mac系统下使用VirtualBox虚拟机安装win7--第四步 安装虚拟机硬件扩展包支持

    如 果想要在虚拟机上使用连接在 Mac 上的硬件外设,比如 U 盘,iPhone 等,需要我们在 Virtual Box 官网下载一个硬件支持扩展安装包.同样地,我们先打开虚拟机的下载页面: http ...

  9. spring boot zuul集成kubernetes等第三方登录

    介绍一下,在单点登录平台集成kubernetes登录,集成其它系统的登录原理是一样的,如grafana, nacos, jenkins等. POM引用: <dependency> < ...

  10. Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战

    一. 前言 [APP 移动端]Spring Security OAuth2 手机短信验证码模式 [微信小程序]Spring Security OAuth2 微信授权模式 [管理系统]Spring Se ...

随机推荐

  1. WebKit Inside: 渲染树

    经过CSS的匹配,就要进入渲染树的构建. 渲染树也叫RenderObject树,因为渲染树上每一个节点,都是RenderObject的子类. 首先来看一下RenderObject的继承类图. 1 Re ...

  2. raw.githubusercontent.com 访问不了

    访问 Github 中的 raw 文件内容时会跳转到 raw.githubusercontent.com 这个域名 但是访问不了. 解决办法 Windows 在 C:\Windows\System32 ...

  3. win11开启hyper-v安装windows虚拟机

    序言: 这周要居家办公了, 趁周末赶紧配置办公环境,因为公司注重安全保密,所以要用对应安全软件,我就干脆整台虚拟机来运行这些东西吧. 开启hyper-v服务 好像是由于电脑装的是windows家庭版, ...

  4. Linux halt命令

    若系统的 runlevel 为 0 或 6 ,则Linux halt命令关闭系统,否则以 shutdown 指令(加上 -h 参数)来取代. 使用权限:系统管理者. 语法 halt [-n] [-w] ...

  5. .NET 原生驾驭 AI 新基建实战系列(三):Chroma ── 轻松构建智能应用的向量数据库

    在人工智能AI和机器学习ML迅猛发展的今天,数据的存储和检索需求发生了巨大变化.传统的数据库擅长处理结构化数据,但在面对高维向量数据时往往力不从心.向量数据库作为一种新兴技术,专为AI应用设计,能够高 ...

  6. 100行代码实现Chat2XX(DB/ Web/ KnowledgeBase)

    这两年基于大模型的应用可谓五花八门,Chat2DB,Chat2Web,Chat2KnowledgeBase,Chat2XXX等等.本质上都是以自然语言作为系统输入,通过各种手段获取额外的上下文信息,然 ...

  7. AI 在软件测试中的应用:2025 年趋势、工具及入门指南

    引言 人工智能 (AI) 正在深刻地重塑软件开发和质量保证 (QA) 的各个方面.尤其是在软件测试领域,AI 不再仅仅是未来愿景,而是当下正在发生的变革.据世界质量报告(2023-24)指出,高达 7 ...

  8. 遇到的问题之"数据库编写SQL-》子查询中加入limit报错:This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'"

    一.问题 > 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 二. ...

  9. 流的使用之“如何将List<String>转为Map”

    流的使用之"如何将List<String>转为Map" ProductIllegalCustom query = new ProductIllegalCustom(); ...

  10. 鸿蒙NEXT开发实战教程—文字识别

    今天跟大家分享一个ocr文字识别的小项目: 鸿蒙系统提供了文字识别的能力,支持简体中文.英文.日文.韩文.繁体中文五种语言.实现步骤为初始化文字识别服务.将图片转换为PixelMap.文字识别.释放O ...