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. 【JVM之内存与垃圾回收篇】本地方法栈

    本地方法栈 Java 虚拟机栈于管理 Java 方法的调用,而本地方法栈用于管理本地方法的调用. 本地方法栈,也是线程私有的. 允许被实现成固定或者是可动态扩展的内存大小.(在内存溢出方面是相同的) ...

  2. Javascript 对象(object)合并 转

    转载了一篇介绍的比较直观的博文.

  3. CoreOS 发行版本介绍

    大多数的软件通常都有什么内测版.公测版什么的. CoreOS 发行版本 而在 CoreOS 中, 有以下3个版本: alpha - α版,音译:阿尔法,俗称尝鲜版,是最新的版本,但是容易出现bug,最 ...

  4. CoreOS 重启策略

    对于已经启动了的 CoreOS 集群,可以通过编辑/etc/coreos/update.conf文件来修改重启策略. 重启策略有以下4种: best-effort(默认):如果 etcd 运行正常则相 ...

  5. Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战

    Browser-use:基于 Python 的智能浏览器自动化 AI 工具调研与实战 一.概述 Browser-use 是一个旨在将 AI "智能体"(Agents)与真实浏览器进 ...

  6. .net WorkFlow 流程设计

    WikeFlow官网:www.wikesoft.com WikeFlow学习版演示地址:workflow.wikesoft.com WikeFlow学习版源代码下载:https://gitee.com ...

  7. @Autowired原理

    例子. // <bean id="> id默认类名首字母小写 默认是单例 // @Scope(value = "prototype") @Repository ...

  8. redis 中文乱码

    查询数据时中文乱码 解决方法: 使用 ./redis-cli 登录的时候加上 --raw参数 ./redis-cli --raw

  9. 【记录】ChatGPT|近期三次更新一览(更新至2023年2月3日)

      如果你还没有使用过ChatGPT,可以先看看我的上一篇文章:[记录]ChatGPT|使用技巧与应用推荐(更新至2023年2月8日).   1月11号晚上,ChatGPT突然很多人都无法登录,包括我 ...

  10. SQL 强化练习(三)

    继续来练习 sql 查询, 似乎也没有什么窍门, 跟着写多了, 自然就记住了, 这个帖子, 来记录一波, 模糊查询 like; 四表关联查询: 老师名 -> 老师id -> 课程id -. ...