Yii2 使用 QQ 和 Weibo 第三方登录源码
我们社区在 yii2-authclient
多次升级后,登录异常。一直想寻求一种通用的方法,尽量不重写 OAuth2
, BaseOAuth
以及 OAuthToken
类, 所以本次直接在 initUserAttributes
方法返回结果的地方去修改,这样会受 yii2-authclient
升级影响较小,我把 QQClient.php
和 WeiboClient.php
放在 frontend/widgets
下了,接下来我们来看代码!
QQClient.php
您的邮箱 2594396825@qq.com 还未验证,请尽快登录邮箱查收邮件并激活。如果您未收到邮件,点此重新发送。 ×
首页
源码
Yii2 使用 QQ 和 Weibo 第三方登录源码
Yii2 使用 QQ 和 Weibo 第三方登录源码 [ 2.0 版本 ]╃巡洋艦㊣2016-09-03 18:17:3311219次浏览24条评论8824 0
我们社区在 yii2-authclient 多次升级后,登录异常。一直想寻求一种通用的方法,尽量不重写 OAuth2, BaseOAuth 以及 OAuthToken 类, 所以本次直接在 initUserAttributes 方法返回结果的地方去修改,这样会受 yii2-authclient 升级影响较小,我把 QQClient.php 和 WeiboClient.php 放在 frontend/widgets 下了,接下来我们来看代码!QQClient.php
<?phpnamespace frontend\widgets;use yii\authclient\OAuth2;
use yii\web\HttpException;
use Yii;class QQClient extends OAuth2
{public $authUrl = 'https://graph.qq.com/oauth2.0/authorize';public $tokenUrl = 'https://graph.qq.com/oauth2.0/token';public $apiBaseUrl = 'https://graph.qq.com';protected function initUserAttributes(){$user = $this->api('user/get_user_info', 'GET', ['oauth_consumer_key' => $this->user->client_id, 'openid' => $this->user->openid]);return ['client' => 'qq','openid' => $this->user->openid,'nickname' => $user['nickname'],'gender' => $user['gender'],'location' => $user['province'] . $user['city'],];}/*** @inheritdoc*/protected function getUser(){$str = file_get_contents('https://graph.qq.com/oauth2.0/me?access_token=' . $this->accessToken->token);if (strpos($str, "callback") !== false) {$lpos = strpos($str, "(");$rpos = strrpos($str, ")");$str = substr($str, $lpos + 1, $rpos - $lpos -1);}return json_decode($str);}/*** @inheritdoc*/protected function defaultName(){return 'QQ';}/*** @inheritdoc*/protected function defaultTitle(){return 'QQ 登录';}
}
WeiboClient.php
<?phpnamespace frontend\widgets;use yii\authclient\OAuth2;
use yii\web\HttpException;
use Yii;class WeiboClient extends OAuth2
{public $authUrl = 'https://api.weibo.com/oauth2/authorize';public $tokenUrl = 'https://api.weibo.com/oauth2/access_token';public $apiBaseUrl = 'https://api.weibo.com/2';protected function initUserAttributes(){$user = $this->api('users/show.json', 'GET', ['uid' => $this->user->uid]);return ['client' => 'weibo','openid' => $user['id'],'nickname' => $user['name'],'gender' => $user['gender'],'location' => $user['location'],];}/*** @inheritdoc*/protected function getUser(){$str = file_get_contents('https://api.weibo.com/2/account/get_uid.json?access_token=' . $this->accessToken->token);return json_decode($str);}/*** @inheritdoc*/protected function defaultName(){return 'Weibo';}/*** @inheritdoc*/protected function defaultTitle(){return '微博登录';}
}
转载于:https://www.cnblogs.com/echojson/p/10766010.html
Yii2 使用 QQ 和 Weibo 第三方登录源码相关推荐
- 拾人牙慧篇之———QQ微信的第三方登录实现
一.写在前面 关于qq微信登录的原理之流我就不一一赘述了,对应的官网都有,在这里主要是展示我是怎么实现出来的,看了好几个博客,有的是直接复制官网的,有的不知道为什么实现不了.我只能保证我的这个是我实现 ...
- qq音乐登录页面的html代码,musicQQ音乐协议登录源码
[实例简介] 最近闲来无事,把一些自己的箱底代码拿出分享.... musicQQ音乐协议登录源码 纯C#代码.协议分析及代码完全由本人完成.欢迎测试. musicQQ协议 登录 源码 c# QQ音乐协 ...
- java 微信 qq 登录_拾人牙慧篇之———QQ微信的第三方登录实现
一.写在前面 关于qq微信登录的原理之流我就不一一赘述了,对应的官网都有,在这里主要是展示我是怎么实现出来的,看了好几个博客,有的是直接复制官网的,有的不知道为什么实现不了.我只能保证我的这个是我实现 ...
- Thinkphp 微信公众号开发3-微信登录源码
Thinkphp 微信公众号开发3-微信登录源码 微信官方的开发文档 微信官方开发文档传送门 官方提供的方式 那我们要做的流程如下 虽然官方写了一堆文字看的一脸懵 但是我们只需要清楚流程就可以了 获取 ...
- thinkPHP仿QQ飞车手游模拟抽奖源码
介绍: thinkPHP仿QQ飞车手游模拟抽奖源码,用途很简单,就是看看你投入多少钱能抽到. 使用方法: 下载源码,上传解压到你的服务器或者主机里面. 由于本程序是thinkPHP开发的,所以需要配置 ...
- android studio开发十一 Library第三方类库源码, Jar包和SO库
原创: 发现android里面不熟悉的东西太多了,查了好多资料,终于搞清楚 Library第三方类库源码, Jar包和SO库这些都是干什么的了,怎么使用它们了. [Library第三方类库源码] Ja ...
- 基于Java毕业设计新冠疫苗接种预约系统登录源码+系统+mysql+lw文档+部署软件
基于Java毕业设计新冠疫苗接种预约系统登录源码+系统+mysql+lw文档+部署软件 基于Java毕业设计新冠疫苗接种预约系统登录源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构 ...
- 计算机毕业设计Java新冠疫苗接种预约系统登录(源码+系统+mysql数据库+Lw文档)
计算机毕业设计Java新冠疫苗接种预约系统登录(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java新冠疫苗接种预约系统登录(源码+系统+mysql数据库+Lw文档) 源码下载地址:htt ...
- 用其他账号登录插件 齐博 php,WordPress禁止某些用户账号登录源码插件“盘他”下载...
发现某些人总有些坏习惯,来评论找资源,回复的时候乱打一气,一连串乱七八糟的字.今天,缙哥哥决定将这些没用的评论通通删除,并将其账号拉入黑名单!说白了,就是我看着不爽. 像这种垃圾评论,占用空间,毫无意 ...
最新文章
- 中国行政区划信息JS库china-location
- PCE:南农沈其荣团队根系分泌物驱动土壤-微生物-养分之间的反馈作用以响应植物的生长...
- android onTouch()与onTouchEvent()的区别
- Golang加密md5
- PHP通过PDO连接Microsoft Access数据库
- hdu 3371 Connect the Cities(prim算法)
- 宇宙大爆炸是不是一个黑洞的大爆炸?
- cisco和H3C命令对比
- java after 函数_函数周期表丨信息丨值丨ISONORAFTER
- 饿了么微信小程序抓取
- 首字母筛选 java_【Java习作】提取汉字拼音首字母(Java版)
- android 面包屑控件,android面包屑導航欄的實現
- 百度网盘非会员上传大于4G的文件
- 机器学习开源框架系列:Torch:1:简介与安装
- Perfmon - Windows 自带系统监控工具
- 橘子学ES19之词项搜索全文检索
- java计算机毕业设计科院垃圾分类系统源码+数据库+系统+lw文档+mybatis+运行部署
- 合肥最最最牛逼的 IT 公司全在这了
- win10笔记本电源的高性能找不到
- 先进先出的两个简单例子