hulang / think-social
baidu dingtalk douyin facebook gitee github google oschina qq sina taobao weixin xiaomi 第三方登录
1.0.10
2024-08-09 02:41 UTC
Requires
- php: >=8.0.0
This package is auto-updated.
Last update: 2024-11-09 03:08:51 UTC
README
环境
- php >= 8.0.0
- ThinkPHP >=8.0.0
目前已支持
- 微信
- 新浪
- 百度
- Gitee
- Github
- Oschina
- 淘宝
- 抖音
- 小米
- 钉钉
composer require hulang/think-social
config/social.php
配置
<?php declare(strict_types=1); /** * 配置信息 */ return [ // 腾讯QQ 'qq' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 微信扫码 'weixin' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 新浪 'sina' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 百度 'baidu' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // Gitee 'gitee' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // Github 'github' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // Google 'google' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // Facebook 'facebook' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // Oschina 'oschina' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 淘宝 'taobao' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 抖音 'douyin' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 小米 'xiaomi' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ], // 钉钉 'dingtalk' => [ 'app_key' => '', // 应用注册成功后分配的 APP ID 'app_secret' => '', // 应用注册成功后分配的KEY 'callback' => '', // 应用回调地址 ] ];
用法示例
<a href="{:url('Oauth/login',['type'=>'qq'])}">QQ登录</a> <a href="{:url('Oauth/login',['type'=>'sina'])}">新浪微博登录</a> <a href="{:url('Oauth/login',['type'=>'weixin'])}">微信登录</a> <a href="{:url('Oauth/login',['type'=>'baidu'])}">百度登录</a> <a href="{:url('Oauth/login',['type'=>'gitee'])}">gitee登录</a> <a href="{:url('Oauth/login',['type'=>'github'])}">github登录</a> <a href="{:url('Oauth/login',['type'=>'oschaina'])}">oschaina登录</a> <a href="{:url('Oauth/login',['type'=>'google'])}">google登录</a> <a href="{:url('Oauth/login',['type'=>'facebook'])}">facebook登录</a> <a href="{:url('Oauth/login',['type'=>'taobao'])}">淘宝登录</a> <a href="{:url('Oauth/login',['type'=>'douyin'])}">抖音登录</a> <a href="{:url('Oauth/login',['type'=>'xiaomi'])}">小米登录</a> <a href="{:url('Oauth/login',['type'=>'dingtalk'])}">钉钉登录</a>
<?php namespace app\index\controller; use think\OAuth2\OAuth; class Oauth { // 登录地址 public function login($type = null) { if ($type == null) { $this->error('参数错误'); } // 获取对象实例 $sns = \think\OAuth2\Social::getInstance($type); // 设置回跳地址 $sns['Callback'] = $this->makeCallback($type); // 跳转到授权页面 $this->redirect($sns->getRequestCodeURL()); } // 授权回调地址 public function callback($type = null, $code = null) { if ($type == null || $code == null) { $this->error('参数错误'); } $sns = \think\OAuth2\Social::getInstance($type); // 获取TOKEN $token = $sns->getAccessToken($code); //获取当前第三方登录用户信息 if (is_array($token)) { $user_info = \think\OAuth2\GetInfo::getInstance($type, $token); dump($user_info); // 获取第三方用户资料 $sns->openid(); //统一使用$sns->openid()获取openid //$sns->unionid();//QQ和微信、淘宝可以获取unionid dump($sns->openid()); echo '登录成功!!'; echo '正在持续开发中,敬请期待!!'; } else { echo "获取第三方用户的基本信息失败"; } } /** * 生成回跳地址 * * @return string */ private function makeCallback($name) { //注意需要生成完整的带http的地址 return url('/oauth/callback/' . $name, '', 'html', true); } }